美文网首页
变量提升(hoisting)

变量提升(hoisting)

作者: 饥人谷_Leonardo | 来源:发表于2018-07-22 20:05 被阅读2次

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

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

上面代码首先使用console.log方法,在控制台(console)显示变量a的值。这时变量a还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。

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

最后的结果是显示undefined,表示变量a已声明,但还未赋值。
变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升。

console.log(b);
b = 1;

上面的语句将会报错,提示“ReferenceError: b is not defined”,即变量b未声明,这是因为b不是用var命令声明的,JavaScript引擎不会将其提升,而只是视为对顶层对象的b属性的赋值。

相关文章

  • 浏览器中的JavaScript执行机制

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

  • 变量提升(hoisting)

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

  • 变量提升(hoisting)

    变量提升(hoisting) 变量提升,提升的是声明而不是赋值所有的变量的声明语句,都会被提升到代码的头部,这就叫...

  • [深入理解ES6]块级绑定

    var声明与变量提升 变量提升(hoisting):使用var关键字声明的变量,无论声明位置在何处,都会被视为声明...

  • 理解 JS 作用域链与执行上下文

    贫道,感觉,JS的坑,不是一般地大。 变量提升: 变量提升( hoisting )。 我可恨的 var 关键字: ...

  • js变量提升Hoisting

    最终结果为undefined这里有私有作用域的语法,加上变量提升,这段代码相当于: 额外内容提示:函数声明有函数声...

  • js 变量提升(hoisting)

    先了解一下变量的生命周期 变量在它声明时初始化。 局部变量在函数调用时创建,当函数执行完毕后销毁,这和为什么要使用...

  • Javascript 变量提升(hoisting)

    什么是作用域(scoping) 在JavaScript中,变量的定义并不是以代码块作为作用域的,而是以函数作用作用...

  • javascript 变量提升(Hoisting)

    简介 “变量提升”意味着变量和函数的声明会在物理层面移动到代码的最前面,但这么说并不准确。实际上变量和函数声明在代...

  • 块级绑定

    使用 var 声明的变量,会提升到当前作用域的最顶部或者是全局作用域,叫做变量提升 Hoisting 。 变量没声...

网友评论

      本文标题:变量提升(hoisting)

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