JavaScript作用域示例详解_

JavaScript作用域示例详解_

ID:63496584

大小:13.28 KB

页数:7页

时间:2021-09-08

JavaScript作用域示例详解__第1页
JavaScript作用域示例详解__第2页
JavaScript作用域示例详解__第3页
JavaScript作用域示例详解__第4页
JavaScript作用域示例详解__第5页
资源描述:

《JavaScript作用域示例详解_》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、JavaScript作用域示例详解_作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今日这篇文章对JavaScript作用域示例详解的介绍,盼望能关心大家更好的学习JavaScript。任何程序设计语言都有作用域的概念,简洁的说,作用域就是变量与函数的可访问范围,即作用域掌握着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。一、JavaScript中无块级作用域在Java或C#中存在

2、块级作用域,即:大括号也是一个作用域。publicstaticvoidmain(){if(1==1){Stringname="seven";}System.out.println(name);}//报错publicstaticvoidMain(){if(1==1){stringname="seven";}Console.WriteLine(name);}//报错在JavaScript语言中无块级作用域functionMain(){if(1==1){varname='seven';}console.log(name)

3、;}//输出:seven二、JavaScript采纳函数作用域在JavaScript中每个函数作为一个作用域,在外部无法访问内部作用域中的变量。functionMain(){varinnerValue='seven';}Main();console.log(innerValue);//报错:UncaughtReferenceError:innerValueisnotdefined三、JavaScript的作用域链由于JavaScript中的每个函数作为一个作用域,假如消失函数嵌套函数,则就会消失作用域链。xo='a

4、lex';functionFunc(){varxo="seven";functioninner(){varxo='alvin';console.log(xo);}inner();}Func();如上述代码则消失三个作用域组成的作用域链,假如消失作用域链后,那么查找变量时候就会消失挨次,对于上述实例:当执行console.log(xo)时,其查找挨次为依据作用域链从内到外的优先级查找,假如内层没有就逐步向上找,直到没找到抛出特别。四、JavaScript的作用域链执行前已创建JavaScript的作用域在被执行之前已

5、经创建,日后再去执行时只需要根据作用域链去查找即可。示例一:xo='alex';functionFunc(){varxo="seven";functioninner(){console.log(xo);}returninner;}varret=Func();ret();//输出结果:seven上述代码,在函数被调用之前作用域链已经存在:全局作用域-Func函数作用域-inner函数作用域当执行【ret();】时,由于其代指的是inner函数,此函数的作用域链在执行之前已经被定义为:全局作用域-Func函数作用域-i

6、nner函数作用域,所以,在执行【ret();】时,会依据已经存在的作用域链去查找变量。示例二:xo='alex';functionFunc(){varxo="eirc";functioninner(){console.log(xo);}xo='seven';returninner;}varret=Func();ret();//输出结果:seven上述代码和示例一的目的相同,也是强调在函数被调用之前作用域链已经存在:全局作用域-Func函数作用域-inner函数作用域不同的时,在执行【varret=Func();】

7、时,Func作用域中的xo变量的值已经由“eric”被重置为“seven”,所以之后再执行【ret();】时,就只能找到“seven”。示例三:xo='alex';brfunctionBar(){console.log(xo);}functionFunc(){varxo="seven";returnBar;}varret=Func();ret();//输出结果:alex上述代码,在函数被执行之前已经创建了两条作用域链:全局作用域-Bar函数作用域全局作用域-Func函数作用域当执行【ret();】时,ret代指的B

8、ar函数,而Bar函数的作用域链已经存在:全局作用域-Bar函数作用域,所以,执行时会依据已经存在的作用域链去查找。五、声明提前在JavaScript中假如不创建变量,挺直去用法,则报错:console.log(xxoo);//报错:UncaughtReferenceError:xxooisnotdefinedJavaScript中假如创建值而不赋值,则该值

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。