JavaScript中Hoisting提升原理及机制详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1448个文字,预计阅读时间需要6分钟。
前言:刚刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的。它是按顺序执行,就像浏览器解析DOM树一样的流程,当解析到JS脚本时,如果是内联脚本或外部链接的脚本,浏览器会暂停解析DOM,先执行这些脚本,然后再继续解析DOM。
前言
刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的,是如浏览器的解析DOM树一样的流程,解析DOM结构的时候,如果遇到JS脚本或者外联脚本便会停止解析,继续下载脚本之后,执行脚本,然后再解析DOM。
然而,却因此常常碰到问题。
看如下代码以及输出:
var name; console.log(name); // undefined name = 'tom'; age = 10; var age; console.log(age); // 10
上面的代码让我们产生了疑惑,我们仅仅声明了name的时候,打印出来值是undefined,按理说,重新声明age之后,age的值应该也是undefined才对,但是输出来的却是10。这究竟是怎么回事儿呢?
我们的通用解释是,遇到了变量提升。
本文共计1448个文字,预计阅读时间需要6分钟。
前言:刚刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的。它是按顺序执行,就像浏览器解析DOM树一样的流程,当解析到JS脚本时,如果是内联脚本或外部链接的脚本,浏览器会暂停解析DOM,先执行这些脚本,然后再继续解析DOM。
前言
刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的,是如浏览器的解析DOM树一样的流程,解析DOM结构的时候,如果遇到JS脚本或者外联脚本便会停止解析,继续下载脚本之后,执行脚本,然后再解析DOM。
然而,却因此常常碰到问题。
看如下代码以及输出:
var name; console.log(name); // undefined name = 'tom'; age = 10; var age; console.log(age); // 10
上面的代码让我们产生了疑惑,我们仅仅声明了name的时候,打印出来值是undefined,按理说,重新声明age之后,age的值应该也是undefined才对,但是输出来的却是10。这究竟是怎么回事儿呢?
我们的通用解释是,遇到了变量提升。

