有人可以解释为什么警报会返回“未定义”而不是“你好”吗?
window.onload = function() {
var a = 'hello';
alert(window.a);
}
答案 0 :(得分:6)
变量'a'不是您上下文中窗口的一部分。
a范围限定为您指定为onload的匿名函数。
如果您愿意,可以添加一个窗口成员:
window.onload = function() {
window.a = 'hello';
alert(window.a);
}
但我建议不要这样做。
答案 1 :(得分:5)
“命名变量是用var语句定义的。当在函数内部使用时,var定义带有函数范围的变量。” - (source)
要全局访问,特别是要使a
成为window
对象的成员,请以这种方式更改代码:
var a; // defined in the global scope
window.onload = function() {
a = 'hello'; // initialized
alert(window.a);
}
或者以这种方式:
var b = 'world'; //defined and initialized in the global scope
window.onload = function() {
alert(window.b);
}