作用域和作用域链

2019-06-28  本文已影响0人  A110802

作用域

全局作用域

任何没有在方法中的变量都是在全局作用域中,全局作用域中农的变量可以在程序中的任何地方访问

```

var greeting = 'Hello World!';

function greet() {

    console.log(greeting);

}

// 打印'Hello World!'

greet();

```

局部作用域

声明在方法中的变量就是局部作用域,这些变量只能在声明的方法内使用,
```

function greet() {

    var greeting = 'Hello World!';

    console.log(greeting);

}

// 打印'Hello World!'

greet();

// Uncaught ReferenceError: greeting is not defined

console.log(greeting);

```

作用域链

当一个变量在js中被使用的时候,js引擎会尝试在当前作用域下寻找这个变量,如果没有找到就会继续再上一层寻找直到找到全局作用域。如果还是没有找到就会返回错误。

For example:

```

let foo = 'foo';

function bar() {

    let baz = 'baz';

    //打印 'baz'

    console.log(baz);

    // 打印 'foo'

    console.log(foo);

    number = 42;

    console.log(number);  // 打印42

}

bar();

```

上一篇 下一篇

猜你喜欢

热点阅读