update:作用域和上下文的区别
This commit is contained in:
		
							parent
							
								
									c1f4350396
								
							
						
					
					
						commit
						300b469b55
					
				@ -74,20 +74,21 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
使用`函数表达式`创建的函数`var foo = function(){}`,**不会被声明提前**,所以不能在声明前调用。
 | 
					使用`函数表达式`创建的函数`var foo = function(){}`,**不会被声明提前**,所以不能在声明前调用。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。 
 | 
					很好理解,因为此时foo被声明了,且为undefined,并没有把 `function(){}` 赋值给 foo。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
所以说,下面的例子,会报错:
 | 
					所以说,下面的例子,会报错:
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 函数作用域
 | 
					##  作用域
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。**
 | 
					**作用域**:变量和函数生效的区域。作用域在**函数定义**时,就已经确定了。
 | 
				
			||||||
 | 
					 | 
				
			||||||
每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的。
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。
 | 
					在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**执行期上下文**:当**函数执行**时,会创建一个执行期上下文的内部对象。每调用一次函数,就会创建一个新的上下文对象,他们之间是相互独立的。当函数执行完毕,它所产生的执行期上下文会被销毁。参考链接:<https://www.cnblogs.com/chenyingjie1207/p/9966036.html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**作用域的上下级关系:**
 | 
					**作用域的上下级关系:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用(**就近原则**)。如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError。
 | 
					当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用(**就近原则**)。如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError。
 | 
				
			||||||
 | 
				
			|||||||
@ -223,7 +223,7 @@ json举例:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
注:json里一般放常量、数组、对象等,但很少放function。
 | 
					注:json里一般放常量、数组、对象等,但很少放function。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为便利时需要获取长度length)。
 | 
					另外,对象和json没有长度,json.length的打印结果是undefined。于是乎,自然也就不能用for循环遍历(因为遍历时需要获取长度length)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**json遍历的方法:**
 | 
					**json遍历的方法:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user