加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

Var与Javascript变量‘隐式'声明

发布时间:2018-08-19 00:41:50 所属栏目:创业 来源:站长网
导读:在 Java Script中,var用来声明变量,可是这个语法并不严酷要求,许多时修改,我们可以直接行使一个变量而不消var声明它。 var x = XX; y =xxx; 诸云云类。这有一个题目,好比说在代码中的某一行,我想行使的一个已声明的变量x,功效因为打字可能拼写错误

JavaScript中,var用来声明变量,可是这个语法并不严酷要求,许多时修改,我们可以直接行使一个变量而不消var声明它。
var x = "XX";
y ="xxx";
诸云云类。这有一个题目,好比说在代码中的某一行,我想行使的一个已声明的变量x,功效因为打字可能拼写错误,这个变量被写成y了,功效相等于“隐式”声明白一个变量y,在现实编程进程中,这种错误偶然较量难以发明。

除此之外,本日通过同事先容,相识到这种“隐式声明”中的别外一个题目。当你在当前上下文内举办这种“隐式”声明时,JavaScript引擎会先在当前上下文中探求是否之前有声明此变量,假如没有,再到上一级的上下文中去探求,假如一向未找到,会最后在window上声明这个变量!
好比:

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 = "a's x";
var b = function() {
var c = function() {
//no var!
x = "c's 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

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读