我只是想知道,没有 return 语句(或没有命中任何 return 语句)的函数是否返回一个完全等同于 false 的值?
例如:
function foo(){};
!!foo();
如果在萤火虫中执行,这应该返回 false(但如果我只是调用 foo(); 则不会返回任何内容)。
非常感谢!
杰森
我只是想知道,没有 return 语句(或没有命中任何 return 语句)的函数是否返回一个完全等同于 false 的值?
例如:
function foo(){};
!!foo();
如果在萤火虫中执行,这应该返回 false(但如果我只是调用 foo(); 则不会返回任何内容)。
非常感谢!
杰森
一个没有 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(){})());