JavaScript 作用域 之域解析和作用域链
程序员文章站
2024-02-17 16:35:58
...
1.作用域链
变量调用 优先找当前作用域的变量
如果当前作用域没有 就找上一层 作用域,以此类推
当最后一层作用域也未找到时 返回undefined
如下案例返回的是 123
2.js 解析器的 域解析:
- 会将作用域内 的var 和 function() 做一个提升
- Var 提升后只申明变量
- function 提升后也只是申明函数,并不执行
如下代码执行后结果是?
Undefined 20
首先根据域解析,将var 和 function 提升到当前作用域的最前面 step 1,2
其次 将function 内的var提升到 function 作用域的最前面,step3
最后 根据js作用域链原则,优先调用离作用域最近的变量
得出undfined 20
var num =10
fun()
function fun(){
console.log(num)
var num =20;
}
// js 域解析 相当做了如下操作
var num //step 1
function fun(){ //step 2
var num //step 3
console.log(num)
num =20
console.log(num)
}
num =10
fun()
上一篇: 决策树--ID3
下一篇: Javascript作用域和作用域链