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


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

например:

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

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

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

Джейсон

3 54

3 ответа:

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

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

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

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

function foo(){}

console.log(foo()); // will show 'undefined'
<html>
<body>
<script>
function a() {}
alert(a());
</script>
</body>
</html>

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

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