<script> myvar = 'my value'; (function() { alert(myvar); myvar = 'local value'; })();//执行结果是:my value
var myvar = 'my value'; (function() { alert(myvar); var myvar = 'local value'; })();//执行结果是:undifind
执行还是从上往下,只不过在预解析或者说编译的时候,var 申明的变量会加上当前作用域,所以myvar 是函数体内私有变量。。
</script>
javascript的策略是让那些忘记预先声明的变量变成全局变量,导致查找bug困难
在函数之外的程序中声明变量的不能被delete
这种情况好像叫hoisting