预解释分析规律
- 预解释
- 代码从上到下执行
- 当我们遇到“函数定义阶段”的时候,不管,因为在预解释阶段,函数已经声明+定义过了
- 当我们遇到“函数调用阶段”的时候
- 形成私有作用域
- 形参赋值
- 预解释
- 代码从上到下执行
注意:在函数调用,一定要顺带写上“该函数对应的堆内存地址”,因为找上级作用域的时候要用到
上级作用域
上级作用域跟函数在哪里调用无关,只跟函数对应堆内存在哪里开辟有关
关注
- 内存和内存释放
- 不释放
- 不立即释放
- 立即释放
- 一旦私有作用域得到释放,函数的每次调用之间,没有任何关系
- 预解释无节操
- 只对等号左边带var的进行预解释,只声明,不定义
- 声明过的不会重新声明,但是会重新赋值
- 自执行函数不会进行预解释,只有执行到它的时候,声明+定义+调用 同时完成
- (针对IE10以下)条件判断语句中,无论条件是否成立,都会进行预解释
- return后面的语句,不会进行预解释,return下面的语句,虽然不执行,但是会进行预解释
this
- 当前函数被调用后,看前面是否有“.”,点前面是谁,this就是谁,如果没有“.”,那么this就是window
- 当元素身上的事件被触发的时候,会执行一个函数,函数中的this指向触发事件的元素
- 自执行函数中的this,永远指向window
- 回调函数中的this,一般执行window,可以通过thisArg进行更改
- 构造函数中的this执行实例
带var和不带var的区别
- 带var:1. 会进行预解释 2. 在私有作用域下,是私有变量
- 不带var:1. 不会进行预解释 2. 在私有作用域下,是window的全局属性
运算符的优先级
算数 > 比较 > 逻辑 > 赋值