return false 和 return 一样吗?

IT技术 javascript
2021-03-10 19:54:32

return false 

等同于:

return
6个回答

不。

var i = (function() { return; })();

i === undefined 意思就是 i == false && i == '' && i == null && i == 0 && !i

var j = (function() { return false; })();

j === false 意思就是 j == false && j == '' && j == null && j == 0 && !j

JS 中的弱运算符使它看起来可能返回相同的东西,但它们返回不同类型的对象。

false != null在 jsbin.com 和 jsfiddle.net 上。有哪些情况false == null
2021-04-26 19:54:32

不,return;与 相同return undefined;,这与具有完全没有 return 语句的函数相同。

@josh3736:WTF?您可以命名一个变量undefined谁会那样做?
2021-04-21 19:54:32
@Rocket 是的。现在潜入undefined = truejQuery 源代码并观看一半的互联网崩溃。
2021-04-23 19:54:32
不必要。 试试 var undefined='oops'; return undefined;
2021-04-26 19:54:32
更糟糕的是,您可以分配global undefined='oops',以便function() { return undefined; }返回“oops”。为什么?谁知道呢,但是您需要为这种可能性做好准备,尤其是当您正在开发一个供其他人使用的库时。要意识到的重要一点是令牌undefined不同于原始值undefined (但是,ECMAScript 5 确实禁止写入undefined.)
2021-05-01 19:54:32
@josh3736,@Raynos:这个问题仍然有一个解决方案,看起来像这样:((function(undefined){/** undefined is really undefined here **/})();参见working jsfiddle)。
2021-05-19 19:54:32

不,它们不一样。返回false从函数返回布尔值false,其中空return将返回undefined

它返回undefined它通常用于中断函数中以下行的执行

不,一个回报false,其他的undefined

看到这个 JSFiddle

但是如果你在没有trueor 的情况下测试这个false,它会评估trueor false

function fn2(){
    return;
}

if (!fn2()){
    alert("not fn2"); //we hit this
}

这个 JSFiddle

http://jsfiddle.net/TNybz/2/

那很有意思。我还添加了函数 fn3(){} 并且它也发出警报。但显然,最佳实践是明确地说 return false。
2021-04-26 19:54:32