var funcHi = function() {
    var a=6;
    var b=5;
    return a+b;
    };

var withBrace = funcHi();
var withoutBrace = funcHi;

console.log("With braces: "+withBrace)     //'Reference 1'
console.log("Without braces: "+withoutBrace)          //'Reference 2'
console.log("Without braces: "+withoutBrace())         //'Reference 3'


该代码非常简单明了。对于“参考1”和“参考3”,控制台将显示11,但我不清楚在哪里使用“参考2”。对于“引用2”,控制台将只显示完整的功能而不是显示11。很多时候,我们使用“引用2”的东西(例如window.onload = initAll),但是它如何有用。

window.onload = initAll;  //What does it actually do? Why not 'window.onload = initAll()'


我不清楚其背后的概念。
如果可能的话,有人可以给我链接这件事的一些很好的教训吗?

最佳答案

在第一种情况下:withBrace包含调用funcHi的结果,因此它是11

在第二种情况下:withoutBrace引用函数funcHi。因此,withoutBrace === funcHi可以说withoutBrace是一个函数,与funcHi相同。您可以通过执行funcHi通过withoutBrace调用函数withoutBrace()并获取11-这是第三种情况。

var funcHi = function() {
  var a=6;
  var b=5;
  return a+b;
};

//assigning the result of calling funcHi to withBrace
var withBrace = funcHi();

typeof funcHi;    //function
typeof withBrace; //number
withBrace === 11  //true, withBrace is 11, a result of calling funcHi

//assigning funcHi to withoutBrace
var withoutBrace = funcHi;

typeof funcHi;           //function
typeof withoutBrace;     //function
withoutBrace === funcHi; //true, they are the same function

funcHi();       //11
withoutBrace(); //11, they return the same thing since withoutBrace points to funcHi

07-27 14:02