-
理解预解析
JavaScript 中,在代码执行之前,会在相应的执行环境中事后将一些货色解析到内存中
-
变量的预解析
- 在代码执行之前,编译器会将
var
关键字定义的变量进行申明,但不会进行赋值,在代码运行后,执行到改行代码后进行变量赋值
- 在代码执行之前,编译器会将
-
函数的预解析
- 赋值式函数的预解析与变量的预解析规定雷同,在代码运行后,执行到改行代码后将变量赋值成一个函数
- 申明式函数会在代码执行之前进行申明并赋值为一个函数
-
预解析中的留神点
- 当函数名与变量名重名时,预解析阶段会以函数优先
- if 语句内的变量和函数无论条件是否成立都会进行预解析
- return 前面代码尽管不执行,但也会进行预解析
-
函数名与变量名的命名与应用标准
- 变量名尽量以名词命名
- 函数名尽量以实现的性能名命名
- 函数应用时尽量先定义在进行调用,最好应用赋值式函数定义
-
变量作用域
- 全局作用域:每一个页面都是一个全局作用域
- 部分作用域:每一个函数外部就是一个部分作用域
-
作用域中变量的上下级关系和作用
- 上下级关系确定函数在哪个作用域下创立,变量取值都会在以后作用域中查找,如果没有查到就会像下级作用域查找,直到查到全局作用域,这个查找的过程叫做作用域链
-
作用域上下级关系——变量定义机制
- 一个变量定义在哪个作用域外面,就只能在以后作用域和上级作用域内应用,对于下级作用域无奈应用该变量
-
作用域上下级关系——变量定义机制
- 当须要应用一个变量时,首先在以后作用域查找,如果定义了,则间接应用变量,如果没有定义则去下级作用域查找,如果到 window 也没有该变量则间接报错
-
作用域上下级关系——变量赋值机制
- 当须要给一个变量赋值时,会首先在以后作用查找,如果定义了,则间接进行赋值,如果没有定义,则去下级作用域查找,如果到 window 也没有该变量,则将该变量定义为一个全局变量后进行赋值
-
作用域中的预解析
- 全局作用域中的预解析:当页面关上时就进行预解析,只解析属于全局的内容
- 部分作用域中的预解析:当函数执行时解析函数外部,只解析属于函数外部的内容
- 留神:函数是独自进行预解析的,当函数执行时,先进行形参赋值,在进行预解析