为什么在Javascript声明变量时添加var关键字

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

复制代码代码如下所示:

var;

yxxx;



所以在u3002this是一个问题,例如在代码行中声明的变量x,我想用结果打字或拼写错误,这个变量是用Y,结果是相当于一个变量y的隐式声明,在实际的编程过程中,错误是很难的找到。

当您在当前上下文中有这个隐式语句时,Javascript引擎将首先在这个变量的语句之前找出当前上下文中的变量,如果没有,则查找一个上下文,如果没有找到,将是这个变量的窗口语句中的最后一个!

例如:

代码如下:


窗口。hello;
函数(){
哦,不!!!;
}
Func();
警报(窗口。Y)显示哦,没有 / / # = >;!!!


当上下文的任何层都有这样的隐式变量时,该层的变量将被修改,而不是在窗口上生成一个新变量(这个bug是一个讨厌的问题,尤其是在封装更复杂的代码中)。

例如:

代码如下:


var;
函数A(){
x;
函数(){()
函数(){()
无var!
x =C的x;
};
警报(前C运行的b.x:+ x);
(c);
警报(后的运行,b.x:+ x);
};
警报(内:+ X);
(b);
警报(B功能恢复,后内:+ X);
};
警报(在运行之前,窗口;
(a);
警报(运行后,窗口;


有以下几层:窗口、函数A、函数B、函数C,它们已经嵌套在所有级别。

在窗口和A中,变量x被定义,变量在B中没有定义,C中的隐式声明一个x,而x最终修改变量的值。

请记住,在Javascript中,声明一个变量,并且必须添加一个var。