上一篇(js 中 var-let-const 的区别)通过变量声明的不同方式简单描述了区别
这一篇继续看看变量提升和函数提升
1 | 在群里看到一道题: var a = 0; |
变量
var 声明的变量会提升至最顶层
let,const 的特殊声明也会提前,并标记为不可再声明
1 | let x = 1; |
函数
函数是【 定义函数名变量, 指针指向 函数内存块】
函数存在块级作用域
将函数声明提到函数级作用域最前面,然后将函数定义提升到块级作用域最前面
题目
1 | var a; // 函数 a 的声明提前 |
结果:
a1 = ‘21’
a2 = ‘1’