600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Javascript var变量隐式声明方法详解

Javascript var变量隐式声明方法详解

时间:2020-09-22 02:23:09

相关推荐

Javascript var变量隐式声明方法详解

web前端|js教程

Javascript,js,方法

web前端-js教程

在JavaScript中,var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它。

百度云管家源码,ubuntu更改定位,怎么修改tomcat主页面,杭州爬虫科技,php设计用户表格,seo翻译中文seo教程lzw

诸如此类。这有一个问题,比如说在代码中的某一行,我想使用的一个已声明的变量x,结果由于打字或者拼写错误,这个变量被写成y了,结果相当于“隐式”声明了一个变量y,在实际编程过程中,这种错误有时比较难以发现。

除此之外,今天通过同事介绍,了解到这种“隐式声明”中的别外一个问题。

当你在当前上下文内进行这种“隐式”声明时,JavaScript引擎会先在当前上下文中寻找是否之前有声明此变量,如果没有,再到上一级的上下文中去寻找,如果一直未找到,会最后在window上声明这个变量!

比如:

秒杀源码,vscode加注释头的插件,ubuntu 博通,查看tomcat异常日志,爬虫只用python,php做大数据分析,沧州百度seo优化价格lzw

代码如下:

微信公众平台源码 下载,ubuntu中文改成英文,tomcat配置端口的文件,爬虫 java代码,php注解怎么用,seo基础入门知识seo博客lzw

window. y = "hello"; function func(){ y = "OH, NO!!!"; } func(); alert(window.y); //#=> display "OH, NO!!!"

当上下文中的任意一层有这种“隐式”定义的变量时,那么该层的该变量会被修改,而不会在window上生成一个新的变量。(这种bug也挺讨厌的,尤其是封装的比较复杂的代码)

比如:

代码如下:

var x = "window.x"; function a() { var x = "as x"; var b = function() { var c = function() { //no var! x = "cs x:"; }; alert("before c run,the b.x:" + x); c(); alert("after c run, the b.x:" + x); }; alert("a.x is:" + x); b(); alert("after b function runed, the a.x is:" + x); }; alert("before a run, window.x:" + x); a(); alert("after a run, window.x:" + x);

这里面有以下几层:window, func a, func b, func c一直作层级嵌套。window->a->b->c

window和a中,都有定义变量x,b中未定义该变量,在c中‘隐式’声明了一个x,该x最终修改了a变量的值。

牢记,在JavaScript中,声明变量,一定前面要加var .

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