Bob*_*mer 39

没有.

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中的弱运算符使得它似乎返回相同的东西,但它们返回不同类型的对象.


Roc*_*mat 32

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

  • @Rocket是的.现在将"undefined = true"偷偷带入jQuery源代码,观看互联网崩溃的一半. (13认同)
  • @ josh3736:WTF?您可以将变量命名为"undefined".谁会这样做? (4认同)
  • 更糟糕的是,您可以指定*global*`undefined ='oops'`,以便`function(){return undefined; }`将返回'oops'.为什么?谁知道,但你需要为这种可能性做好准备,特别是如果你正在开发一个供其他人使用的图书馆.要认识到的重要一点是[令牌`undefined`与原始值*undefined*不同.](http://stackoverflow.com/questions/4225968/json-parse-error-using-jquery-parsejson/4226440 #4226440)(但是,ECMAScript 5禁止写入`undefined`.) (2认同)

Mic*_*ski 8

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


Jam*_*man 5

不,一个回来false,另一个undefined.

看到这个JSFiddle

但如果您在没有true或测试的情况下进行测试false,则会评估truefalse:

function fn2(){
    return;
}

if (!fn2()){
    alert("not fn2"); //we hit this
}
Run Code Online (Sandbox Code Playgroud)

这个JSFiddle

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


unc*_*ons 5

不,我不这么认为。通常返回 False 来指示函数应该执行的指定操作失败。以便调用函数可以检查函数是否成功。

返回只是操纵编程流程的一种方式。


Ten*_*eff 5

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