为什么window.addEventListener不起作用?
这个问题在这里已经有了答案:
当您使用var x = function(){}
来声明函数时,应该在调用函数之前声明它。
通过function x (){}
, x
将存在于当前作用域中,无论它在多久后声明。 因为这样的副作用 ,更推荐var x = function(){}
。 例如:
var user = 'alien';
if( user == 'alien') {
function salute () { console.log("Welcome to Earth!"); }
} else {
function salute (){ console.log("Good day!"); }
}
salute()
将打印Good day!
无论如何,即使它不是我们想要的。
之前声明该函数。
var initialiseTable = function () {
console.log("hello world!!");
};
try {
window.addEventListener("load", initialiseTable, false);
} catch(e) {
window.onload = initialiseTable;
}
有关声明函数的更多信息,请阅读以下内容:var functionName = function(){} vs function functionName(){}
既然你来自C#,其差别很像:
class A {
public int method2() {
//I can call method1 even though it *declared* later below
int a = method1();
}
public int method1() {
}
}
VS
class B {
public int method2() {
bool a = method1(3); //I can't call it because it is *assigned* later below.
//In fact I cannot even compile it
Func<int, bool> method1 = x => x == 3;
}
}
您可能会注意到JavaScript中的差异,如果您看一下:
function a() {
}
任何地方都没有任务。
与var a = function(){}
,显然有赋值,并且与后面的C#示例类似。