js变量提升

2019-05-28  本文已影响0人  希染丶

变量进入作用域方式

1.语言内置:所有的作用域都有 this 和 arguments
2.形式参数:函数的形式参数会作为函数作用域的一部分
3.函数声明: function a(){}
4.变量声明:var a;

变量提升

函数及变量的声明都将被提升到函数的最顶部

函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

function test1() {
  a = 5;
  console.log(a);
  console.log(window.a);
  var a = 10;
  console.log(a);
}
test1();
log依次为5,undefined,10;

实际执行顺序

function test1() {
  var a;
  a = 5;
  console.log(a);
  console.log(window.a);
  var a = 10;
  console.log(a);
}

因为a = 5,在test1内执行,所以window.a为undefined

如果直接在window下执行

a = 5;
console.log(a);
console.log(window.a);
var a = 10;
console.log(a);

结果,5,5,10;

上一篇 下一篇

猜你喜欢

热点阅读