Что возвращает функция javascript в отсутствие оператора return?
Мне просто интересно, выполняет ли функция без оператора return (или без каких-либо операторов возврата) возвращает значение, которое полностью эквивалентно false?
Например:
function foo(){};
!!foo();
Это должно возвращать false, если выполняется в firebug (но ничего не возвращает, если я только что вызвал foo();).
Спасибо большое!
Джейсон
Ответы
Ответ 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(){})());