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

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

например:

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

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

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

Джейсон

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(){})());