JS变量的作用域及案例

95 阅读1分钟

作用域:在es5中,函数的代码块内部的代码,可以访问形参变量,也可以访问全局变量,就近优先(作用域只针对函数,对象没有作用域)

  作用域:指一个变量它在哪些代码范围能够被使用,这些地方就是变量的作用域
  
  全局变量:变量在程序云行时,把它设置为window对象的属性
  
  局部变量:函数内部可以使用,外部不能使用的变量(形参(隐式声明)、实参var

注意:1.函数外面的代码不能直接访问函数内部的变量;

2.但是函数内部可以操作函数外部的变量。

image.png

image.png

image.png

image.png

案例:

1.

 <script type="text/javascript">
		var obj={name:"karen"}
		function fn(n){
			//隐式声明了:var n="karen"
			n="jack"
		}
		fn(obj.name)//这里的obj.name先取值,再传入函数
		console.log(obj.name)
	</script>

image.png

2.

<script type="text/javascript">
    var obj={name:"karen"}
		function fn(n){
			//隐式操作:var n=引用数据obj
			n.name="jack"
		}
		fn(obj)//obj取值操作,这里的obj是一个引用数据
		console.log(obj.name)
                    </script>

image.png

3.

 <script type="text/javascript">
		var obj={name:"karen"}
		function fn(n){
			//隐式操作:var n=obj引用数据
			n=[1,2,3,4]
		}
		fn(obj)
		fn(obj)//重新调用了一次
		console.log(obj.name)
	</script>
            

image.png