作用域[scope]
- 作用域是一层作用包裹另一层作用域,从而形成作用域链 通过scope完成的
- 作用域链导致了变量的使用规则
- 1: 在自己的作用域中找,如果没有就去父域中找,直到找到全局域为止
- 变量查找方式:
- 1:先看声明 再看赋值 赋值使用就近原则
- 注意:变量名 = 值 不是全局的 是变量赋值 不是声明
- 因为 在预编译阶段 window下没有这个属性 只有在解析执行的时候 才给window添加了这个属性 并赋值
- 有var就是声明 没var就是赋值
- 作用域的存在: 是为了可以让小作用域中使用的变量 可以访问到大作用域中的变量
var a = 1
function b() {
console.log(a)
}
b()
//如果没有作用域链 a is not defined
//因为作用域链: 所以可以输出 1