Что возвращает функция javascript при отсутствии оператора возврата? - PullRequest
55 голосов
/ 13 октября 2009

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

Например:

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

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

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

Jason

Ответы [ 3 ]

69 голосов
/ 13 октября 2009

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

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

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

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

function foo(){}

console.log(foo()); // will show 'undefined'
3 голосов
/ 13 октября 2009
<html>
<body>
<script>
function a() {}
alert(a());
</script>
</body>
</html>
1 голос
/ 13 октября 2009

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

alert((function(){})());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...