JS 作用域

2021-04-07  本文已影响0人  my木子

作用域

var num = 1;  // 全局
function getMumber(){
    var num = 2;  // 局部
};
console.log(num);  //  1


// 括号内定义的作用域不都是局部作用域
// 1.
var num = 1;
if(true){
    var num = 2;
};
console.log(num)  // 2

// 2.
for (var i = 0; i < 5; i++) {
    break;
}
console.log(i)

// 3.
var i = 3;
while(i<5){
    i++;
    break;
};
console.log(i)  //  4

作用域链

var num1 = 1;
var num2 = 2;
var num3 = 3;
function getNumber(){
    num1 = 11;      // 全局
    var num2 = 22;  // 局部
    console.log(num1);      // 11
    console.log(num2);      // 22
    console.log(num3);      // 3
}
getNumber();
console.log(num1);      //  11
console.log(num2);      // 2

声明提升

var num1 = 1;
function getNumber(){
    console.log(num1);      // undefined
    console.log(fun());     // undefined
    var num1 = 2;           // 局部变量    
    function fun(){         // 函数的提升比变量更优先
        return num1;
    }
    console.log(fun());     // 2
}
getNumber();
console.log(num1);  //  1
上一篇下一篇

猜你喜欢

热点阅读