diff --git a/03-JavaScript基础/10-作用域.md b/03-JavaScript基础/10-作用域.md index c04159a..6e3dda6 100644 --- a/03-JavaScript基础/10-作用域.md +++ b/03-JavaScript基础/10-作用域.md @@ -74,20 +74,21 @@ 使用`函数表达式`创建的函数`var foo = function(){}`,**不会被声明提前**,所以不能在声明前调用。 -很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。 +很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。 所以说,下面的例子,会报错: ![](http://img.smyhvae.com/20180314_2145.png) -## 函数作用域 +## 作用域 -**调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。** - -每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的。 +**作用域**:变量和函数生效的区域。作用域在**函数定义**时,就已经确定了。 在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。 +**执行期上下文**:当**函数执行**时,会创建一个执行期上下文的内部对象。每调用一次函数,就会创建一个新的上下文对象,他们之间是相互独立的。当函数执行完毕,它所产生的执行期上下文会被销毁。参考链接: + + **作用域的上下级关系:** 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用(**就近原则**)。如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError。 diff --git a/03-JavaScript基础/12-对象的创建&构造函数.md b/03-JavaScript基础/12-对象的创建&构造函数.md index 355dfd3..b37f5dc 100644 --- a/03-JavaScript基础/12-对象的创建&构造函数.md +++ b/03-JavaScript基础/12-对象的创建&构造函数.md @@ -223,7 +223,7 @@ json举例: 注:json里一般放常量、数组、对象等,但很少放function。 -另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为便利时需要获取长度length)。 +另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为遍历时需要获取长度length)。 **json遍历的方法:**