何时在javascript中使用范围解析?

时间:2012-01-10 21:57:50

标签: javascript

当我设置onload属性时,我使用

window.onload=initialize_page;

然而, 当我使用undefined时,我理解这是一个窗口属性我只是使用:

undefined

我如何知道何时调整属性?

如果我从第一个语句中删除窗口就可以了。我想我在这里的代码中已经看到了SO,但哪种方式是最佳实践?

1 个答案:

答案 0 :(得分:2)

如果要定义全局变量,建议使用window.作为前缀,以防止与具有相同名称的局部变量发生冲突。

例如,Rocket(在OP的评论中)建议使用onload=initialize_page;而不是window.onload = ...。在以下情况下,这将失败:

function foo() {
    var onload = "on load";
    onload = initialise_page;
    // What? Let's check:
    alert(onload === window.onload); //false
}
foo();

如果您遇到变量,并且不知道它是否是全局变量,您可以使用以下代码来确定它:

alert( 'somevar' in window ); //If true, then in global scope. If false, then not
alert( somevar === window.somevar); // Risky. If somevar is not an object, this
                                    // comparison will also be true. Example:
                                    // var local = 1;window.local=1;
                                    // ^ They're equal by value