从一道简单例题出发
最近被js的函数作用域链折腾的不浅,今天彻底来解决一下这类问题。(不得不吐槽js作用域真的很乱,let才是yyds)
首先先看两段代码
/*first code*/
var a = 'apple';
console.log(a); //apple
if(true){
console.log(a); //apple
var a = 'pear';
console.log(a);//pear
}
console.log(a); //pear
/*second code*/
var a = 'apple';
console.log(a); //apple
function f(){
console.log(a);//apple
}
f()
console.log(a); //apple
/*third code*/
var a = 'apple';
console.log(a); //apple
function f(){
console.log(a); //undefined
var a = 'pear'