1.预解释
- 在浏览器加载的时候,首先会提供一个供全局js代码执行的环境 —全局作用域(global/window)
- 预解释:在当前作用域中,在js代码执行之前,浏览器会默认的把带var跟function的进行声明与定义
var num = 12;
var obj = {name:'zhang',age:13};
funtion fn(){
console.log('zzzz');
}
console.log(fn);
console.log(fn());

理解声明与定义
- 声明:var num 告诉浏览器在全局的作用域中有一个num的变量了,如果一个变量只是声明了但是没有赋值,默认的值是undefined
- 定义:num=12 给我们的变量进行赋值
var与function预解释的区别
- var:在预解释的时候只是提前的声明
- funciton:在预解释的时候提前的声明+定义都完成了
预解释只发生在当前的作用域下
- 开始只对window下的进行预解释
- 只有函数执行的时候才会对函数中的进行预解释
js的内存分类
- 栈内存:用来提供一个供js代码执行的环境—>作用域(全局作用域、私有)
- 堆内存:用来存储引用数据类型的值—>对象存储的是属性名和属性值。函数存储代码字符串