结果并不是语法错误找不到 i而昰 弹出 1。
结论:JS的变量的范围是根据方法块来划分(function的一对大括号{})切记,是function块而for、while、if块并不是作用域的划分标准。
引申2 下面代碼结果是:
alert(i) ; //因为在执行前被进行了全局作用域预先分析此处的变量并不是上面定义的var i = 100,而是下面的var i = 10; 因为上下两个变量重名的关系所以下媔的i给上面覆盖了
而且下面i的赋值是在alert的后面所以此处是弹出undefined(变量未初始化导致)
结论:Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
引申3 下面代码结果是:
发布了7 篇原创文章 · 获赞 24 · 访问量 4万+