《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文
变量声明的过程分为三部分
- 创建一个值;
-
- 如果这个值是基本类型值,就直接在栈内存中直接创建;
- 如果是引用类型值,需要在堆内存开辟一个新的空间,把里面的内容存储进去。
- 创建一个变量(先把值创建好后,才是创建变量);
- 让值与变量相关联。
举例说明
var obj = {
name : 'xiaoqiang',
fn : (function(a){
console.log('a:', a);
})(obj.name) //这行会报错:Cannot read property 'name' of undefined
}
上文的代码之所以会报Cannot read property 'name' of undefined,是由于变量提升的缘故,导致变量提前被声明了。如果上面的 obj 是用 let 或 const 关键字声明的,其报错信息就会变成 obj is not defined。