第一节:作用域:根据名称查找变量的一套规则
ReferenceError与作用域判别失败有关,而TypeError则表示作用域判别成功了,但是对结果的操作是不合法的
------------------------------------------------------
var a=2 会被分解成两个步骤
1.在其作用域生成新变量(若没有)
2.LHS查询对其赋值
------------------------------------------------------
不成功的RHS会抛出ReferenceError,不成功的LHS会自动隐私创建一个全局变量(非严格模式下)
==============================
第二节:词法作用域
eval和with(不推荐)
==============================
第三节:函数作用域与块作用域
1.隐藏内部实现
2.
=============================
第四节:提升
1.函数提升优先于变量
=============================
第五节:作用域闭包
两个特征:(1)为创建内部作用域而调用了一个包装函数(2)包装函数返回值必须至少包含一个对内部函数的引用,这样就会创建涵盖整个包装函数内部作用域的闭包
回调函数实际上就是使用闭包
闭包实现模块化