美文网首页
JavaScript变量提升

JavaScript变量提升

作者: LU7IN | 来源:发表于2017-07-16 19:29 被阅读0次

变量提升

JavaScript引擎工作的方式是,先解析代码,获取所有被声明的变量,然后一行一行地运行。这造成的结果,就是所有的变亮的声明语句都会被提升到代码头部,这就叫做变量提升(hoisting)。
举几个栗子:

console.log(a);
var a = 1;

上面代码使用console.log(a)的方法在控制台显示变量a的值,但是这是变量a的值并没有声明和赋值。学过C语言的同学会说这样子是错误的,但是在JavaScript中并不是错误的。实际上运行的过程是这样子的:

var a;
console.log(a);
a =1;

最后显示的结果为undefined,表示变量a已经声明,但是并没有赋值。
变量提升只对var声明的变量有效,如果一个变量不是用var声明的,那么这个变量就不会发生变量提升。

let b;
console.log(b);

上面语句会报错!ReferenceError: b is not defined说明变量b并没有被声明,这是因为b不是用var命令声明的,所以JavaScript引擎不会将其提升。

var x = 5    //初始化x
elem = document.getElemById("demo")
elem.innerHTML = x + " " + y
var y = 7    //初始化y

在上述代码中,y输出了undefined, 这是因为变量声明y提升了,但是初始化y=7并不会提升,所以y变量是一个未知的变量。

var x = 5;
var y;
elem = document.getElementById("demo");
elem.innerHTML = x + " " + y ;
y = 7;

上面的代码之前错误代码的正确写法。

因此,我们得养成一个良好的习惯,在头部就声明我们的变量从而避免不必要的错误。
未完待续。。。

相关文章

  • 变量提升 & this指向

    变量提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在...

  • var与let、const的区别

    什么是变量提升?JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量...

  • 浏览器中的JavaScript执行机制

    变量提升:JavaScript代码是按顺序执行的吗? 变量提升(Hoisting)所谓的变量提升,是指在 Java...

  • runoob js第六天

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

  • 阿里前端 面试问题

    JavaScript相关须是达到精通 JavaScript作用域链 JavaScript变量声明提升 JavaSc...

  • javaScript变量提升

    JavaScript 严格模式(use strict)

  • JavaScript变量提升

    JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是...

  • JavaScript变量提升

    原文 :http://rainsoft.io/javascript-hoisting-in-details/?ut...

  • JavaScript变量提升

    发布自Kindem的博客,欢迎大家转载,但是要注意注明出处。另外,该文章收纳在Kindem的个人的 IT 知识整理...

  • JavaScript 变量提升

    JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明...

网友评论

      本文标题:JavaScript变量提升

      本文链接:https://www.haomeiwen.com/subject/rekxkxtx.html