javascript变量
我们是否必须像这样声明js变量:javascript变量,javascript,Javascript,我们是否必须像这样声明js变量: var x=5; 或者就这么简单 x=5; 有什么区别?。。。它会影响变量的功能吗?..将变量的范围限制为当前功能。抛开它,就会产生一个全球性的问题。由于它们是竞争条件和脚本相互干扰的主要来源。这没有什么区别-与第二个变量(x=5;)相比,如果该变量尚不存在,则会自动声明该变量 但是,我总是使用第一个选项。变量名=5总是将变量名放入全局对象(浏览器中的窗口) 如果您在全局上下文中(=不是函数上下文),则这两条语句基本相同。但是,如果您在函数上下文中,var确
var x=5;
或者就这么简单
x=5;
有什么区别?。。。它会影响变量的功能吗?..将变量的范围限制为当前功能。抛开它,就会产生一个全球性的问题。由于它们是竞争条件和脚本相互干扰的主要来源。这没有什么区别-与第二个变量(x=5;)相比,如果该变量尚不存在,则会自动声明该变量
但是,我总是使用第一个选项。
变量名=5
总是将变量名
放入全局对象(浏览器中的窗口
)
如果您在全局上下文中(=不是函数上下文),则这两条语句基本相同。但是,如果您在函数上下文中,var
确保此变量仅在当前上下文中声明
例如:
function foobar() {
bar = 55;
}
foobar();
window.bar === 55 // true
更好:
function foobar() {
var bar = 55;
}
window.bar === 55 // false
结论:始终在函数上下文中使用var
。这避免了用变量替换/覆盖全局对象。x=5
意味着该变量(执行后)将变为全局变量,并且可以被代码中的所有其他部分(以及其他Java脚本)访问
而var x=5
仅对声明它的块(及其子体)熟悉
请注意,尽管x=5
将是全局的,但只有在执行这一行时才会变为全局的!
因此,如果你把它放在一个函数中,它只有在该函数被调用(第一次)后才会变成全局的。+1在浏览器环境中提到作为全局对象的window
。如果函数已经这样声明变量,函数(typ){var typ;}我们必须这样做吗?为避免覆盖全局对象…@Afrig:no。所调用的Activation对象
会处理所有传入的参数。它仍然只在函数的上下文中可用。它肯定会产生影响<代码>函数a(){var x=1;}x=0;a();警报(x.toString())代码>。去掉var
,看看结果是否不变。