JavaScript预解析

85 阅读1分钟

js引擎运行JS分为两步:预解析+代码执行

  • 预解析: JS引擎会把js里面所以var还有function提升到函数最前面,称为变量提升与函数提升(变量提升优先与函数提升) 函数提升(只整体提升,不调用)
  fn()//函数整体会提升到最前面,所以不报错
 function fn(){
   console.log(666)
 }

image.png

变量提升(只提前声明,不赋值)

 console.log(a)//只提前声明了a没有赋值所以undefined
  var a = 20
  console.log(a)//代码执行后赋值了20

image.png

  • 同名提升
  1. 变量同名
 var a=22
 var a=33
 console.log(a)
 /* 代码是这样的
 var a;
 var a;
 a=22;
 a=33;//33把22覆盖了
 console.log(a)
  */

image.png 2. 函数同名

  function fn() {
    console.log(111)
  }

  function fn() {
    console.log(2222)
  }
  /* 后面这个同名函数把前面函数覆盖了,所以fn指的是function fn () {
				console.log(2222)
			}	*/
  fn()

image.png