01.作用域

John Doe 2021-04-22 17:42:02
Categories: Tags:

一、概念

二、私有作用域

函数创建的私有作用域,只与函数定义时的作用域有关,与函数执行时的作用域无关

三、作用域链的查找机制

四、私有变量
在私有作用域中,有以下几种情况的定义的变量为私有变量:

剩余的变量,都要基于作用域链的机制向上查找。

五、小练习

2-1 私有作用域

var n = 10;
function fn() {
    var n = 20;
    function f() {
        n++;
        console.log(n);
    }
    f();
    return f;
}
var x = fn();
x();
x();
console.log(n);

3-1 变量查找机制(读)

var a = 10;

(function(){
    console.log(a)
})();

(function(){
    try{
        console.log(b);
    }catch(err){
        console.log(err);
    }
})();

3-2 变量查找机制(写)

var a = 10;
(function(){
    console.log("b" in window);
    b = 20;
    console.log("b" in window);
    console.log(b);
})();

4-1 私有变量

var a = 12,
    b = 13,
    c = 14;
function f(a) {
    console.log(a, b, c);
    var b = c = a = 20;
    console.log(a, b, c);
}
f(a);
console.log(a, b, c);

六、答案
2-1

21
22
23
10

3-1

10
ReferenceError: b is not defined

3-2

false
true
20

4-1

12,undefined,14
20,20,20
12,13,20