通常写变量,没太多考虑,直接下手
var msg ='Hello Aurora';
alert(msg);//弹出 Hello Aurora
alert( window.msg);//弹出 Hello Aurora
在举个栗子
function print(){
console.log('自定义的print')
}
window.print();//运行,覆盖了window中原本的print方法
解决办法就是 自执行函数+闭包
(function(){
var msg='hello Aurora';console.log(window.msg);
//undefined
console.log(msg)
// hello Aurora
})()
或者讲window,全局都作为参数传给那个函数
(function (global,doc){
global.setTimeout(function (){
doc.getElementById('userId').innerHtml='Hello Aurora';
},1000);
})(window,document);
这样的好处是
1. msg变量只有在各自的执行环境有效,不会和其他全局变量混淆。
2.解决了大量使用全局变量的情况
3.代码结构清晰。