100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > JavaScript的作用域和块级作用域概念理解【javascript】

JavaScript的作用域和块级作用域概念理解【javascript】

时间:2020-04-08 00:11:24

相关推荐

JavaScript的作用域和块级作用域概念理解【javascript】

web前端|js教程

作用域,块级作用域

web前端-js教程

作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。讲到这里,首先理解两个概念:块级作用域与函数作用域。

企业社交 源码,ubuntu卸载深度桌面,tomcat设置年老代大小,爬虫的select,合肥正规php培训,seo自学网免费seo博客lzw

什么是块级作用域呢?

博彩源码 手机,vscode工作区是ram,ubuntu查看域名,程序自动重启tomcat,python爬虫chm,php检测邮箱,淘宝seo营销视频教程,动画加载 网站模版,php 案例 网站模板lzw

任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。

最新超市b2c源码 ,如何使用vscode进行文件管理,ubuntu .so文件,网页怎么验证打开tomcat,sqlite数据误删,ui设计师和网页设计师的区别,免费国外云服务器地址,微擎微赞插件通用安装,前端文件下载框架,杀爬虫粉剂,php设计模式 视频,海南seo顾问服务,springboot的包扫描的,寺庙网站素材,js 网页底部,产品网站 模板,怎么修改后台地址,404特效页面模板,java 学生考试管理系统,vb 设置程序图标lzw

函数作用域就好理解了(*^__^*) ,定义在函数中的参数和变量在函数外部是不可见的。

大多数类C语言都拥有块级作用域,JS却没有。请看下文demo:

//C语言 #include void main() { int i=2; i--; if(i) { int j=3; } printf("%d/n",j); }

运行这段代码,会出现“use an undefined variable:j”的错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。

而JS是如何表现的呢,再看另一个demo:

functin test(){ for(var i=0;i<3;i++){ } alert(i); } test();

运行这段代码,弹出”3″,可见,在块外,块中定义的变量i仍然是可以访问的。也就是说,JS并不支持块级作用域,它只支持函数作用域,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。

那么我们该如何使JS拥有块级作用域呢?是否还记得,在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们是否可以用这个特性来模拟出JS的块级作用域呢?看下面这个DEMO:

function test(){ (function (){ for(var i=0;i<4;i++){ } })(); alert(i); } test();

这时候再次运行,会弹出”i”未定义的错误,哈哈,实现了吧~~~这里,我们把for语句块放到了一个闭包之中,然后调用这个函数,当函数调用完毕,变量i自动销毁,因此,我们在块外便无法访问了。

JS的闭包特性is the most important feature((*^__^*) 大家懂的)。在JS中,为了防止命名冲突,我们应该尽量避免使用全局变量和全局函数。那么,该如何避免呢?不错,正如上文demo所示,我们可以把要定义的所有内容放入到一个

(function (){ //内容 })();

之中,这时候,我们是不是相当于给它们的外层添加了一个函数作用域呢?该作用域之外的程序是无法访问它们的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。