【例】
<script>
window.str = 'abc'; function t1(){
function t2(){
str = 'xyz';
alert(str);
}
t2();
} t1();
alert(window.str);
</script>
弹出:xyz xyz
加 var 是声明变量,在哪里声明就属于哪个局部(例如 str 在 t2 函数中声明,str 就属于 t2 函数局部变量,不加 var 仅仅就是一个赋值,按照作用域的规则,当函数局部没有 str 这个变量声明时,就要往外层函数中找,直到找到 window,把 window.str 给赋值,污染了全局变量。)
【例】
<script>
console.log(window.a,window.b);
function t(){
var a = 'local';
b = 'global';
}
t();
console.log(window.a,window.b);
</script>
输出:
undefined undefined
undefined "global"