JS 中的变量提升
参考不同的文章, 整理成为自己可理解的内容
文章原地址
出现的代码运行线上地址 javascript-visualizer
首先来看小例子
console.log('name: ', name) // undefined
console.log('age : ', age ) // undefined
console.log('sayHi ;', sayHi) // f sayHi()
var name = '小火车'
var age = 24
function sayHi () {
return "sayHI"
}
打印出来的结果都是undefined
先了解JS
的运行机制: 首先是创建阶段, 其次是执行阶段
在创建阶段的时候,JS
引擎就会创建全局的window和this
对象, 将所有的变量声明都赋予一个默认值undefined
,所有的函数声明都被存入到内存中, 在执行阶段的时候,JS
引擎就会将真实的值赋值给声明的变量
-
在创建阶段的时候,
JS引擎
主要做的事情1.创建了全局的
window
对象
2.创建了this
对象
3.给变量和函数分配内存
4.给变量赋默认值undefined
,把函数声明放进内存中 -
在执行阶段,
JS
引擎就会一步一步的执行代码, 将内存中的变量赋予真实值
再回头看先前的代码
console.log('name: ', name) // undefined
console.log('age : ', age ) // undefined
console.log('sayHi ;', sayHi) // f sayHi()
var name = '小火车'
var age = 24
function sayHi () {
return "sayHI"
}
当JS
的引擎开始执行console.log()
代码的时候,这个时候已经就处于执行阶段了, 之前的创建阶段已经执行完毕, 变量的声明已经被赋予了默认值undefined
, 同时函数的声明已经在内存中定义了, 因此name
和age
都是被赋予了undefined
,sayHi
也正是内存中函数的引用
何为变量提升: 在JS
引擎创建阶段给变量赋予默认值undefined
的过程就是变量提升
何为变量提升: 在JS
引擎创建阶段给变量赋予默认值undefined
的过程就是变量提升
何为变量提升: 在JS
引擎创建阶段给变量赋予默认值undefined
的过程就是变量提升
来源:CSDN
作者:小火车况且况且况且
链接:https://blog.csdn.net/weixin_43972992/article/details/103985555