第一节:预解释作用域this原理及应用
预解释(变量提升)
1、js中的数据类型包括:
- 基本数据类型:number、string、boolean、null、undefined
- 引用数据类型:object:{对象}、[数组]、/正则/、Date;function
2、基本数据类型是按照值来操作的,引用数据类型是按照地址操作的
3、
- 当浏览器加载HTML页面时,首先会提供一个供全局js代码执行的环境,叫全局作用域(global/window)
- 发布日记,杂文,所见所想
- 撰写发布技术文稿(代码支持)
- 撰写发布学术论文(LaTeX 公式支持)
代码:
var num = 12;
var obj = {name : "John" , age : 7};
function fn(){
console.log("hello world!");
}
console.log(fn); //把整个函数的定义部分(函数本身)在控制台输出
console.log(fn()); //把当前函数执行的返回结果(return后面写的是啥,返回啥),没有return返回undefined
预解释
在当前的作用域中,JS代码执行之前,浏览器会默认的把所有带var和function的进行提前的声明或者定义
1、理解声明和定义
- 声明(declare):var num; 告诉浏览器在全局作用域中有一个num的变量,如果一个变量只是声明了但是没有赋值,默认值是undefined
- 定义(defined):num=12; 给变量进行赋值
2、对于带var和function关键字的在预解释的时候操作还是不一样的
- var:在预解释的时候只是提前的声明
- function:在预解释的时候提前的声明+定义都完成了
3、预解释只发生在当前的作用域当中,例如:开始只对window下的进行预解释,只有函数执行的时候才会对函数中的进行预解释
JS中内存的分类
- 栈内存:用来提供一个供JS代码执行的环境 —>作用域:全局作用域、私有作用域
- 堆内存:用来存储引用数据类型的值,对象存储的是属性名和属性值,函数存储的是代码字符串