Что функция JavaScript возвращает в отсутствие оператора возврата?

Мне просто интересно, функция без оператора возврата (или без нажатия каких-либо операторов возврата) возвращает значение, которое полностью эквивалентно ложному?

Например:

function foo(){};
!!foo();

Это должно вернуть false, если выполняется в firebug (но ничего не возвращает, если я просто вызвал foo ();).

Большое спасибо!

Джейсон

13.10.2009 01:00:36
У JavaScript также есть второе значение, которое указывает на отсутствие значения. Неопределенное значение представляет более глубокий вид отсутствия. Это значение переменных, которые не были инициализированы, и значение, которое вы получаете, когда запрашиваете значение свойства объекта или элемента массива, который не существует. Неопределенное значение также возвращается функциями, которые не имеют возвращаемого значения, и значением параметров функции, для которых не указан аргумент. undefined - это предопределенная глобальная переменная
Xsi 3.05.2014 12:22:26
3 ОТВЕТА
РЕШЕНИЕ

Функция без оператора возврата (или той, которая завершает свое выполнение, не нажимая одну) вернется undefined.

И если вы дважды используете унарный оператор отрицания для undefinedзначения, вы получите false.

Вы ничего не видите на консоли, потому что Firebug не печатает результат выражения, когда оно не определено (просто попробуйте набрать undefined;на консоли, и вы ничего не увидите).

Однако если вы вызываете console.logфункцию напрямую, и вы сможете ее увидеть:

function foo(){}

console.log(foo()); // will show 'undefined'
70
13.10.2009 01:18:12
Этот ответ правильный. Вы можете протестировать JavaScript в интерактивном режиме, используя консоль Firebug или Safari.
Palo Verde 13.10.2009 01:07:19
Или просто скопируйте следующее в адресную строку: javascript: alert (function () {} ());
Marius 13.10.2009 01:18:03
<html>
<body>
<script>
function a() {}
alert(a());
</script>
</body>
</html>
3
13.10.2009 01:26:11

чтобы узнать, попробуйте это в консоли Firebug:

alert((function(){})());
1
13.10.2009 01:38:59