关于JavaScript的作用域

      在Java等语言中,变量是具有块作用域存在的,即一个变量的作用范围是在定义它的由“{”和“}”括起来的语句块中,在这个块中该变量不可见。但是在JavaScript里,变量的作用域是函数范围的作用域,即一个变量在定义它的函数之内都可见,即使在该变量的定义语句之前。

 

function scopeTest()
{
	alert(var1);         //结果为undefined,可用但还未初始化
	var var1 = "var1";   //定义变量var1,变量函数内可见,但在赋值语句之前可能未被初始化
	
	var2 = "var2";       //因为var2函数内可见 ,因此可以在定义语句前赋值(不是全局变量)
	alert(this.var2);    //结果为undefined,证明上一条语句不是定义了一个全局变量
	alert(var2);         //结果为var2,定义并赋值了
	var var2;            //定义变量var2
}

 

      在JavaScript中,当使用一个变量时,是沿着从使用处开始的作用域链查找,当使用处所在的function定义了该变量时,使用该定义的变量;当这个function不存在这个变量时,会继续往外一层的function寻找,直至达到最外层仍不能找到该变量的定义或着全局变量赋值语句,则出错。 

function scopeChainTest()
{
	var v1 = "v1 from scopeChainTest()";
	var v2 = "v2 from scopeChainTest()";
	var v3 = "v3 from scopeChainTest()";
	
	outer();
	function outer()
	{
		var v1 = "v1 from outer()";
		var v2 = "v2 from outer()";
		
		inner();
		function inner()
		{
			var v1 = "v1 from inner()";
			
			alert(v1);//结果为v1 from inner()
			alert(v2);//结果为v2 from outer()
			alert(v3);//结果为v3 from scopeChainTest()			
		}
	}
}
//调用scopeChainTest()
window.onload = scopeChainTest();

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值