块级作用域

2019-03-28  本文已影响0人  iceoreocheese

块级作用域

作用域

含义

a. 作用域被用来描述在某个代码块可见的所有实体(或有效的所有标识符),更精准一点,叫做上下文。是你的代码在运行时,各个变量、函数和对象的可访问性。换句话说,作用域决定了你的代码里的变量和其他资源在各个区域中的可见性。(上下文和作用域也有区别

b. 任何一对花括号中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的

c. 当变量定义在一个函数中时,变量就在局部作用域中,而定义在函数之外的变量则从属于全局作用域。每个函数在调用的时候会创建一个新的作用域。

作用

a. 最小访问原则

b. 为你的代码提供了一个安全层级。计算机安全中,有个常规的原则是:用户只能访问他们当前需要的东西。

c. 函数体内部,局部变量的优先级比同名的全局变量高

块语句

1. var

var x = 1;
{
var x = 2;
}
console.log(x); // 输出 2

2. let

let x = 1;
{
let x = 2;
}
console.log(x); // 输出 1
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0]();                // 10
a[1]();                // 10
a[6]();                // 10
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0]();                // 0
a[1]();                // 1
a[6]();                // 6

3.const

const c = 1;
{
const c = 2;
}
console.log(c); // 输出1, 而且不会报错

4.function

foo('outside');  // TypeError: foo is not a function
{
function foo(location) {
console.log('foo is called ' + location);
}
foo('inside'); // 正常工作并且打印 'foo is called inside' 
}
上一篇 下一篇

猜你喜欢

热点阅读