JS中函数后面有没有括号的区别

最近在看 《JavaScript DOM编程艺术》,把书里面的例子照着打一遍。不过很容易漏打或者错打一些东东。

遇到问题的起因:
是要利用window.onload函数,保证页面加载完成后再执行后续的js脚本。但由于onload函数只能加载一个函数作为入参,所以要进行改造。代码如下:

function addLoadEvent(func){
  var oldonload = window.onload;
  if (typeof window.onload != 'function'){
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

大家可以发现,入参func被用了两次,前一次是不带括号的,后一次是带括号的。
而我第一次写的时候,把两次都写成func(),导致js脚本没有被执行。

举个栗子:

function test() {
	return 123
}
var a = test()
var b = test

那么实际结果是
a = 123
b = 函数本身

所以增加 括号,会导致立刻运算,进而返回结果;
不加括号,只是将 函数 作为 对象,赋值给变量而已。

你可能感兴趣的:(JavaScript)