Javascript window.onload不带全局变量
我正在尝试使用不带全局变量的windows.load HTML代码:Javascript window.onload不带全局变量,javascript,Javascript,我正在尝试使用不带全局变量的windows.load HTML代码: 试验 名称: 在: 定义window.onload回调时,应将函数本身分配给它(仅myNS.setUp),以便以后调用。您的代码所做的是立即调用函数并分配结果。JavaScript中的变量作用域主要是面向函数作用域的。与中一样,函数包含其内部变量。因此,只需在分配给窗口的函数中声明变量(并分配DOM el)即可避免污染全局范围。onload: window.onload=function(){ //函数内部的变量赋值 v
试验
名称:
在:
定义
window.onload
回调时,应将函数本身分配给它(仅myNS.setUp
),以便以后调用。您的代码所做的是立即调用函数并分配结果。JavaScript中的变量作用域主要是面向函数作用域的。与中一样,函数包含其内部变量。因此,只需在分配给窗口的函数中声明变量(并分配DOM el)即可避免污染全局范围。onload
:
window.onload=function(){
//函数内部的变量赋值
var button1=document.getElementById('b1');
var button2=document.getElementById('globalCheck');
//附加匿名函数而不是命名函数
button1.addEventListener('click',函数(){
警报(按钮1.值);
});
按钮2.addEventListener('click',函数(){
警报(“全局范围内的变量按钮1:“+window.button1+”\n“+”全局范围内的变量按钮2:“+window.button2”);
});
};代码>
.greyButton{
背景颜色:灰色;
颜色:#F5;
宽度:30%;
}
#txt1{
宽度:29%;
}
试验
希望这样更清楚,@Matt Browne。欢迎您以其他方式编辑:)顺便说一句,您可以使用this.myButton=
作为myNS.myButton=
的替代方案。在这种情况下,可能是个人偏好的问题……您可以使用该模式并将eveyrthing包装到一个自执行函数中,该函数设置一个内部范围,不会让变量泄漏到全局范围,或者您可以定义alertMM()
在onload函数中使用相同的myButton
object实际上您应该清除此代码。如果您使用的是addEventListener,请在任何地方都使用它,不需要退回到window.onload
thing。使用模块模式改进名称空间。它将使您的代码更严格,更容易理解。当你需要分配方法时,使用闭包`window.onload=function(){..}'你说的“在任何地方都使用它,不需要退回到window.onload”是什么意思,你能给我举个例子吗?
window.onload = myNS.setUp();