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