js 变量提升的原理

作者: 老邵 | 来源:发表于2018-04-01 20:09 被阅读432次

众所周知,JavaScript 中存在变量提升的问题,在 ES6 引入的新关键词 let 可以很方便的解决这个问题,不过这篇文章的目的不是解决变量提升的问题,而是讨论为什么会有变量提升这种现象。

以前对这个问题根本没有想过,在看了 《你不知道的 js 》这本书后,才开始考虑并且明白了其中的原因。

变量提升的根本原因是变量声明与赋值的分离,举个例子 var a = 2;这个代码是分两步进行的。首先是 var a 这一部分的变量声明,这个过程是在代码编译时进行的。然后是 a = 2; 这一部分的变量赋值,这个过程是在代码执行时进行的。

代码先编译一遍然后才执行,这样下面的变量提升的代码就容易解释了。

console.log(a)
var a = 2;

b = 3;
var b;
console.log(b)

在这段代码编译的过程中,a 与 b 都进行了声明,代码执行的过程中先打印 a ,因为 a 只是声明了还没有赋值,所以结果是 undefined。后打印 b ,因为 b 的赋值在打印的前面,所以结果是 3.

code

相关文章

  • 浏览器学习笔记-JS执行

    变量提升 变量提升原理浏览器对js是先编译后执行,在编译过程中,js中的变量声明会被提升到代码段落前面。函数声明和...

  • js 变量提升的原理

    众所周知,JavaScript 中存在变量提升的问题,在 ES6 引入的新关键词 let 可以很方便的解决这个问题...

  • 深入理解JavaScript之变量提升

    变量提升 原理:JS引擎的工作方式是先解析代码,获取所有被声明的变量;然后在运行。JS代码自上而下执行之前,浏览器...

  • 大前端—面试宝典—第一篇

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量; 2)然...

  • 前端知识点收集

    JS原理 变量提升与函数提升/是什么,为什么,怎么办this的指向以及当return了一个对象之后跨域:JSONP...

  • JS中的提升

    JS中包含两种提升,变量提升和函数提升。 变量提升 变量提升只能是var或者function声明的变量或者函数,l...

  • 01-撩课大前端—面试宝典—第一篇

    1. var的变量提升的底层原理是什么? 2. JS如何计算浏览器的渲染时间? 3. JS的回收机制? 4. 垂直...

  • 撩课-Web大前端每天5道面试题-Day1

    1. var的变量提升的底层原理是什么? 2. JS如何计算浏览器的渲染时间? 3. JS的回收机制? 4. 垂直...

  • js底层原理一(变量提升、函数提升)

    前言: js是解释性语言,运行时才能解析出代码对错。 为什么可以变量函数提升? js代码是自上而下执行,但是在js...

  • 刷前端面经笔记(三)

    1.var的变量提升的底层原理是什么? JS引擎的工作方式是1)先解析代码,获取所有被声明的变量;2)然后再执行。...

网友评论

    本文标题:js 变量提升的原理

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