29.js--变量的作用域

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


1.变量的作用域概念

        概念:变量的作用域(scope) 是程序源代码中定义这个变量的区域

        分类:作用域分为 全局作用域 和 函数作用域(局部作用域) 两种

2.全局作用域        

        (1)全局作用域是最外围的一个执行环境,在web浏览器中,全局执行环境被认为是window对象。

        (2)所有全局变量和函数都是作为window对象的属性和方法创建的。全局变量拥有全局作用域,在javascript代码中的任何地方都是有定义的。全局作用域直到应用程序退出例如关闭网页或浏览器时才会被销毁

全局作用域变量:

  • JS中声明的全局变量是全局对象的属性;

  • 函数体内不使用var声明而直接赋值的变量当做全局变量(局限性);

    当函数内部已经存在当前变量,那么给没有var声明的同名的变量相当于重新赋值,并不会提升为全局

举例1:

            var b=30
			function fn(){
				var a=20
				console.log(a)//20
				console.log(b)//30
			}		
			fn()

运行结果:

 

举例2:

             var a=30
			function fn(){
				// var a=20
				console.log(a)			
			}		
			fn()
			console.log(a)

运行结果:

3.局部作用域

        (1)在函数内(var声明)的变量只在函数体内有定义。它们是局部变量,作用域是局部性的。

        (2)函数参数也是局部变量,它们只在函数体内有定义。函数作用域中的所有代码执行完毕后,该作用域被销毁,保存在其中的所有变量和函数定义也随之销毁。

在函数体内,局部变量的优先级高于同名的全局变量,如果在函数内声明的一个局部变量或者函数参数中带有的 变量和全局变量重名,那么全局变量就被局部变量遮盖。

1.在es5中 函数的代码块内部的代码 可以访问形参变量  也可以访问外部的变量(全局) 就近优先

2.函数外面的代码不能直接访问函数内部的变量

3.作用域: 指一个变量它在哪些代码范围能够被使用,这些地方就是变量的作用域

举例3:

            var a=20//全局变量==>变量会在程序运行时 把它设置为window对象的属性
			function fn(){
				a=40
			}
			fn()
			console.log(a)


			function fm(){
				a=60
			}
			fm()
			console.log(a)

运行结果:

 

局部变量就是函数内部能使用 外部不能使用的变量( var,形参)

举例4:

           var obj={
				name:"karen"
			}
			function fn(n){	
				//隐式操作 var n=内存中的数那个传入的对象
				// n.name="jack"  其实没有修改n的值
				n={name:"jack"}//把n的值改了
			}
			fn(obj)//obj取值操作 取的是一个引用的对象
			console.log(obj.name)

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值