update:作用域和上下文的区别
This commit is contained in:
parent
c1f4350396
commit
300b469b55
@ -74,20 +74,21 @@
|
||||
|
||||
使用`函数表达式`创建的函数`var foo = function(){}`,**不会被声明提前**,所以不能在声明前调用。
|
||||
|
||||
很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。
|
||||
很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。
|
||||
|
||||
所以说,下面的例子,会报错:
|
||||
|
||||
![](http://img.smyhvae.com/20180314_2145.png)
|
||||
|
||||
## 函数作用域
|
||||
## 作用域
|
||||
|
||||
**调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。**
|
||||
|
||||
每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的。
|
||||
**作用域**:变量和函数生效的区域。作用域在**函数定义**时,就已经确定了。
|
||||
|
||||
在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。
|
||||
|
||||
**执行期上下文**:当**函数执行**时,会创建一个执行期上下文的内部对象。每调用一次函数,就会创建一个新的上下文对象,他们之间是相互独立的。当函数执行完毕,它所产生的执行期上下文会被销毁。参考链接:<https://www.cnblogs.com/chenyingjie1207/p/9966036.html>
|
||||
|
||||
|
||||
**作用域的上下级关系:**
|
||||
|
||||
当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用(**就近原则**)。如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError。
|
||||
|
@ -223,7 +223,7 @@ json举例:
|
||||
|
||||
注:json里一般放常量、数组、对象等,但很少放function。
|
||||
|
||||
另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为便利时需要获取长度length)。
|
||||
另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为遍历时需要获取长度length)。
|
||||
|
||||
**json遍历的方法:**
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user