乐趣区

javascript变量提升

变量提升(Hoisting)被认为是,Javascript 中执行上下文(特别是创建和执行阶段)工作方式的一种认识。
需要注意的是,变量提升并不是物理上层面上的把代码移动到最前面。而是变量和函数声明在代码里面的位置不会动,在编译阶段被放入内存中。

// 正确的方式:先声明函数,在调用函数

function speaker(value){console.log(value);
 }     speaker('变量提升');// 变量提升 

我们正确的编码方式就是先声明,后调用,不过在 Javascript 中,先调用,后声明也是可以的

// 先调用,后声明

 speaker('变量提升');// 变量提升     
 function speaker(value){console.log(value);     
  }

先调用,后声明之所以仍然可以正常运行,这是因为在 JavaScript 中执行上下文的工作方式造成的。

变量提升也适用于其他类型和变量。变量可以在声明之前进行初始化和使用。但是如果没有初始化,就不能使用它们。

// 变量初始化在声明之前

a = 6;     
var a;        
console.log(a)//6

JavaScript 仅提升声明,而不提升初始化。如果你先使用的变量,再声明并初始化它,变量的值将是 undefined。

var x = 1; // 声明 + 初始化                
x console.log(x + "" + y); //'1 undefined'
var y = 2; // 声明 + 初始化 y

// 上面的代码和下面的代码是一样的

 var x = 1;                 // 声明 + 初始化 x 
 var y;  // 声明 y   
 console.log(x + " " + y);  //y 是未定义的 
 y = 2; // 初始化  y
退出移动版