在准备js面试题时,遇到了许多知识盲区,或是已经遗忘的知识,所以来写一下博客,记录自己的成长,同时查漏补缺
1.我们js引擎运行js代码时会分两部分执行: 预解析 代码执行
什么是预解析,就是js引擎会把js里面所有的 var 以及 function 提升到当前作用域的最前面
代码执行,就是js代码按照书写的顺序从上往下执行
用代码来看最直接
var a = 1; f() function f() { console.log(a) var a = 2; } // 结果是undefined
根据预解析,它会把var以及function提升,也就是变成下面这样
var a = 1; function f() {//函数进行提升 var a;//变量提升 console.log(a) a = 2 } f() //这样看就会很清晰
接下来一个案例
var a = 1 function fn() { console.log(a) var a = 2 console.log(a) } fn() //结果是 undefined 2
相当于下面这样
var a = 1 function fn() { var a //将var提升到当前作用域的最前面 console.log(a) a = 2 console.log(a) } fn()