Javascript 为什么window.addEventListener不工作?
在window.onload事件中,我希望调用一个函数。 如果我按照下面给出的方式定义它,则不会调用该函数Javascript 为什么window.addEventListener不工作?,javascript,Javascript,在window.onload事件中,我希望调用一个函数。 如果我按照下面给出的方式定义它,则不会调用该函数 try { window.addEventListener("load", initialiseTable, false); } catch(e) { window.onload = initialiseTable; } var initialiseTable = function () { console.log("hello world!!"); }; 但是
try {
window.addEventListener("load", initialiseTable, false);
} catch(e) {
window.onload = initialiseTable;
}
var initialiseTable = function () {
console.log("hello world!!");
};
但是如果我把函数声明改为
function initialiseTable() {
console.log("hello world!!");};
它可以工作,有什么想法吗?先声明函数
var initialiseTable = function () {
console.log("hello world!!");
};
try {
window.addEventListener("load", initialiseTable, false);
} catch(e) {
window.onload = initialiseTable;
}
有关声明函数的详细信息,请阅读以下内容:
只需将函数initialiseTable置于第一个位置,例如:
var initialiseTable = function (){ /*[...]*/ }
继续调用后。函数声明应始终在其调用之前 在这一行:-
window.addEventListener("load", initialiseTable, false);
initialiseTable未知,因此应将其放在函数定义之后。
实际上,函数语句导致在执行其代码块*中的任何内容之前绑定其标识符。函数声明在执行任何代码之前加载。它不同于按正常自上而下顺序计算的函数表达式。函数表达式仅在解释器到达该代码行时加载。因此,如果您使用:-
var initialiseTable = function () {
console.log("hello world!!");
};
它不起作用,但它起作用了:-
function initialiseTable() {
console.log("hello world!!");};
当您使用
var x=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!"); }
}
sallet()
将打印早安代码>不管怎么说,即使这根本不是我们想要的。因为你来自C#,区别很大:
class A {
public int method2() {
//I can call method1 even though it *declared* later below
int a = method1();
}
public int method1() {
}
}
vs
任何地方都没有任务
其中,与var a=function(){}
一样,显然存在赋值,这与后一个C#示例类似。我想说的是执行顺序问题,因为initialiseTable
用于之前的声明查看此处的后期注释,但这就是为什么您应该提供信息而不是链接到它。那个developer.mozilla.org链接已经不好了,不知道它以前说什么了。你是明星,谢谢<代码>加载
即使使用函数声明也无法工作。我使用的是jQuery,所以将代码替换为`$(window).on('load',function(){loadMethod();});它成功了。
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;
}
}
function a() {
}