再谈js的作用域

 

面试中遇到的一个题目:

 1 var word = "hello world";
 2 (function(){
 3      alert(word);
 4      var word = "hello test";
 5 })();
 6 **********************************
 7 var word ="hello world";
 8 (function(){
 9     alert(world);
10     function world(){
11          console.log("hello test");    
12     }     
13 })()

这两段代码会发生什么?console一下,你就知道。

  1. 局部变量的优先级大于全局变量。
  2. js编译机制

js分为编译期和运行期,编译的过程中为var声明的变量和*function*分配内存,运行期顺序执行。

  • var 声明的变量,只有变量声明提前。变量的初始化还在原来的位置。
  • 使用函数声明语句的话,函数名称和函数体均提前。(函数声明语句中,函数名是一个变量名,指向函数体)
原文地址:https://www.cnblogs.com/a2762/p/4127085.html