在函数中,
使用 var 声明变量,变量在创建阶段会被提升(js会在创建变量创建阶段为其分配内存空间),默认值为undefined;
使用 let(和const) 声明变量,也会存在变量提升,但是初始化没有被提升,在我们声明它之前,是不可访问的。这被称为“暂时死区“,在我们声明之前访问,js会抛出一个ReferenceError。
function sayHi() {
console.log(name) // undefined
console.log(age) // ReferenceError: age is not defined
var name = 'Lydia'
let age = 21
}
sayHi()
变量的赋值可以分为三个阶段:
1、创建变量,在内存中开辟空间
2、初始化变量,将变量初始化为undefined
3、真正赋值
关于let var function:
let 创建过程被提升了,初始化没有
var 创建和初始化 都提升了
function 创建 初始化 赋值都提升了