Подтвердить что ты не робот

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

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

Например:

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

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

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

Джейсон

4b9b3361

Ответ 1

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

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

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

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

function foo(){}

console.log(foo()); // will show 'undefined'

Ответ 2

<html>
<body>
<script>
function a() {}
alert(a());
</script>
</body>
</html>

Ответ 3

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

alert((function(){})());