Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 声明没有var关键字的变量_Javascript_Variables_Global Variables_Declaration - Fatal编程技术网

Javascript 声明没有var关键字的变量

Javascript 声明没有var关键字的变量,javascript,variables,global-variables,declaration,Javascript,Variables,Global Variables,Declaration,在学校里,有这样的文字: 如果您声明一个变量,而不使用“var”,则该变量始终变为全局变量 在函数中声明全局变量有用吗?我可以想象在一些事件处理程序中声明一些全局变量,但它有什么好处呢?更好地使用RAM?不,没有RAM的好处或类似的东西 我所说的就是我所说的。考虑这个函数: function foo() { var variable1, variable2; variable1 = 5; varaible2 = 6; return variable1 + var

在学校里,有这样的文字:

如果您声明一个变量,而不使用“var”,则该变量始终变为全局变量


在函数中声明全局变量有用吗?我可以想象在一些事件处理程序中声明一些全局变量,但它有什么好处呢?更好地使用RAM?

不,没有RAM的好处或类似的东西

我所说的就是我所说的。考虑这个函数:

function foo() {
    var variable1, variable2;

    variable1 = 5;
    varaible2 = 6;
    return variable1 + variable2;
}
看起来很简单,但它返回的是
NaN
,而不是
11
,因为
varaible2=6上的输入错误行。它创建了一个带有键入名称的全局变量:

函数foo(){
变量1,变量2;
变量1=5;
变量2=6;
返回变量1+变量2;
}
console.log(foo());//楠

console.log(varaible2);//6?!?!?!不,没有RAM好处或类似的东西

我所说的就是我所说的。考虑这个函数:

function foo() {
    var variable1, variable2;

    variable1 = 5;
    varaible2 = 6;
    return variable1 + variable2;
}
看起来很简单,但它返回的是
NaN
,而不是
11
,因为
varaible2=6上的输入错误行。它创建了一个带有键入名称的全局变量:

函数foo(){
变量1,变量2;
变量1=5;
变量2=6;
返回变量1+变量2;
}
console.log(foo());//楠

console.log(varaible2);//6?!?!?!全局变量的唯一用途是如果需要全局访问它们。在这种情况下,您应该在函数外部使用
var
关键字来声明它们,以明确您确实想要创建全局变量,并且在尝试声明局部变量时不要忘记
var

通常,您应该尝试确定代码的范围,以便在全局范围内尽可能少地使用代码。脚本中使用的全局变量越多,就越不可能与其他脚本一起使用


通常情况下,函数中的变量应该是局部变量,这样当您退出函数时,它们就会消失。

全局变量的唯一用途是当您需要全局访问它们时。在这种情况下,您应该在函数外部使用
var
关键字来声明它们,以明确您确实想要创建全局变量,并且在尝试声明局部变量时不要忘记
var

通常,您应该尝试确定代码的范围,以便在全局范围内尽可能少地使用代码。脚本中使用的全局变量越多,就越不可能与其他脚本一起使用


通常情况下,函数中的变量应该是局部变量,这样当您退出函数时它们就会消失。

有时在函数中创建新的全局可访问属性非常有用,以后可以通过引用窗口对象轻松访问这些属性(所有全局声明的属性都附加到窗口对象)


然而,与通常将任何内容声明为全局可访问时一样,它可能会在以后导致问题,因为这些属性很容易被覆盖等。最好只将值作为参数传递给函数并检索其结果。

有时在函数中创建新的全局可访问属性非常有用,因为稍后可以通过引用窗口对象轻松访问(所有全局声明的属性都附加到窗口对象)


但是,与通常将任何内容声明为全局可访问时一样,它可能会导致以后出现问题,因为这些属性很容易被覆盖等。最好是将值作为参数传递给函数并检索其结果。

主要问题是其他人可能已经在使用同名的全局

然后,当您更改全局变量的值时,您将覆盖它们的值


稍后,当下次使用全局时,它将神秘地发生变化。

主要问题是其他人可能已经在使用同名的全局

然后,当您更改全局变量的值时,您将覆盖它们的值


稍后,当下次使用全局变量时,它将神秘地发生变化。

忘记var的副作用

隐式全局变量和显式定义的全局变量之间有一个细微的区别。 不同之处在于使用delete运算符取消定义这些变量的能力:

•使用var创建的全局变量(在任何函数之外的程序中创建的) 无法删除

•不使用var创建的隐含全局变量(无论是否在函数内部创建)可以 删除

这表明隐含全局变量在技术上不是实变量,但它们是属性 全局对象的。属性可以使用delete运算符删除,而变量 不能:

在ES5严格模式中,对未声明变量(如两个反模式)的赋值 在前面的代码段中)将引发错误


JavaScript模式,由斯托扬·斯特凡诺夫(O'Reilly)撰写。版权所有2010雅虎!,公司,9780596806750.

忘记var时的副作用

隐式全局变量和显式定义的全局变量之间有一个细微的区别。 不同之处在于使用delete运算符取消定义这些变量的能力:

•使用var创建的全局变量(在任何函数之外的程序中创建的) 无法删除

•不使用var创建的隐含全局变量(无论是否在函数内部创建)可以 删除

这表明隐含全局变量在技术上不是实变量,但它们是属性 全局对象的。属性可以使用delete运算符删除,而变量 不能:

在ES5严格模式中,对未声明变量(如两个反模式)的赋值 在前面的代码段中)将引发错误

JavaScript模式,由斯托扬·斯特凡诺夫(O'Reilly)撰写。版权所有2010雅虎!,