Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onload不带全局变量_Javascript - Fatal编程技术网

Javascript window.onload不带全局变量

Javascript window.onload不带全局变量,javascript,Javascript,我正在尝试使用不带全局变量的windows.load HTML代码: 试验 名称: 在: 定义window.onload回调时,应将函数本身分配给它(仅myNS.setUp),以便以后调用。您的代码所做的是立即调用函数并分配结果。JavaScript中的变量作用域主要是面向函数作用域的。与中一样,函数包含其内部变量。因此,只需在分配给窗口的函数中声明变量(并分配DOM el)即可避免污染全局范围。onload: window.onload=function(){ //函数内部的变量赋值 v

我正在尝试使用不带全局变量的windows.load

HTML代码:


试验
名称:

在:


定义
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();