javascript变量

javascript变量,javascript,Javascript,我们是否必须像这样声明js变量: var x=5; 或者就这么简单 x=5; 有什么区别?。。。它会影响变量的功能吗?..将变量的范围限制为当前功能。抛开它,就会产生一个全球性的问题。由于它们是竞争条件和脚本相互干扰的主要来源。这没有什么区别-与第二个变量(x=5;)相比,如果该变量尚不存在,则会自动声明该变量 但是,我总是使用第一个选项。变量名=5总是将变量名放入全局对象(浏览器中的窗口) 如果您在全局上下文中(=不是函数上下文),则这两条语句基本相同。但是,如果您在函数上下文中,var确

我们是否必须像这样声明js变量:

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
,看看结果是否不变。