你不知道的JS(作用域和闭包)

第一节:作用域:根据名称查找变量的一套规则

 

ReferenceError与作用域判别失败有关,而TypeError则表示作用域判别成功了,但是对结果的操作是不合法的

------------------------------------------------------

var a=2 会被分解成两个步骤

1.在其作用域生成新变量(若没有)

2.LHS查询对其赋值

------------------------------------------------------

不成功的RHS会抛出ReferenceError,不成功的LHS会自动隐私创建一个全局变量(非严格模式下)

==============================

 

第二节:词法作用域

eval和with(不推荐)

==============================

 

第三节:函数作用域与块作用域

1.隐藏内部实现

2.

=============================

第四节:提升

1.函数提升优先于变量

=============================

第五节:作用域闭包

两个特征:(1)为创建内部作用域而调用了一个包装函数(2)包装函数返回值必须至少包含一个对内部函数的引用,这样就会创建涵盖整个包装函数内部作用域的闭包

回调函数实际上就是使用闭包

闭包实现模块化

 

posted @ 2018-12-05 23:45  lemonib  阅读(192)  评论(0)    收藏  举报