Javascript(八)作用域

ES5中作用域

1.在es5中没有函数就不谈作用域。
2.定义:一个标识符,在哪些写代码的地方能够使用,这写地方就是这个标识符能够起作用的区域,称为作用域。
3.作用域又分全局作用域和局部作用域。
局部作用域:函数内部的变量,只能在函数内部访问。函数里面能访问里面和函数外面的标识符,但是函数外面不能访问里面的标识符。
eg:

 var a=100
			 
			 function  fn() {
			 	//声明提前var b
			 	console.log(b)//undefined,执行时b还未被赋值但已经声明提前了
			 	var b=20
			 	console.log(a)//100,可以访问外部变量
			 	c=20
			 }
			 
			 fn()
			 console.log(b)//报错不能访问函数里面的变量
			 console.log(c)//报错

4.函数的调用: 是去它声明的作用域下执行代码,不是去调用的作用域执行代码
eg:

             var a=30
			 function fn () {
			 	var a=200
			 	return {say:function() {
			 		console.log(a)
			 	}}
			 }
			 var a=20
			 var obj=fn()
			 obj.say()//虽然是obj调用,但是时去它声明的作用域执行代码,
			 所以a在say作用域找没有a,再去它的函数fn作用域找得到a=200
			

当一个作用域内有相同的标识符
方法:同一个作用域内有相同的标识符声明提前:
1.变量声明
2.形参声明
3.形参赋值(实参给形参上数据)
4.函数声明
eg:

//1.变量声明提前var a
  2.形参声明var a
  3.形参赋值var a=1
  4.函数声明function a(){}
  取数据的时候取最后一个数据
function fn (a) {                                                                   
	 	console.log(a) //打印函数funtion a(){}                            
	 	var a=2             //给变量a赋值2                       
	 	function a () {                             
	 		
	 	}
	 	console.log(a)//a=2
	 }
	 fn(1)

你可能感兴趣的:(学习)