【例】
<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"