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 = 函数本身

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值