最近在看 《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 = 函数本身
所以增加 括号,会导致立刻运算,进而返回结果;
不加括号,只是将 函数 作为 对象,赋值给变量而已。