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
是否需要使用关键字“var”在Javascript中声明变量_Javascript_Variables_Keyword - Fatal编程技术网

是否需要使用关键字“var”在Javascript中声明变量

是否需要使用关键字“var”在Javascript中声明变量,javascript,variables,keyword,Javascript,Variables,Keyword,我发现在Javascript中声明变量时似乎没有必要使用关键字“var”。事实上,我发现完全忽略它并没有什么不良副作用 也许这是一种不好的形式,但有人能解释为什么有必要这样做吗?如果你不声明它,也许你正在访问一个全局变量。小心点,因为你可能会得到不想要的副作用。如果你不声明它,可能您正在访问一个全局变量。请注意这一点,因为您可能会得到不想要的副作用。使用关键字var可确保变量的作用域正确。如果不使用关键字,JavaScript将自动将变量创建为全局范围,这可能会在以后执行页面时引起问题 name

我发现在Javascript中声明变量时似乎没有必要使用关键字“var”。事实上,我发现完全忽略它并没有什么不良副作用


也许这是一种不好的形式,但有人能解释为什么有必要这样做吗?

如果你不声明它,也许你正在访问一个全局变量。小心点,因为你可能会得到不想要的副作用。

如果你不声明它,可能您正在访问一个全局变量。请注意这一点,因为您可能会得到不想要的副作用。

使用关键字var可确保变量的作用域正确。如果不使用关键字,JavaScript将自动将变量创建为全局范围,这可能会在以后执行页面时引起问题

name = 'Bic'; // implicitly global

function myFunc() {
    var name = 'John'; // this variable is scoped here
    console.log(name); // John
    getName(); // Bic
}

function getName() {
    console.log(name); //Bic
}

myFunc();
getName();
在上面的代码中,我声明了一个全局名称和一个作用域名称。请注意,在myFunc完成执行后,全局名称将保留。名称是大多数HTML元素的属性。在这个特定的答案中,我没有var关键字的名称声明可能会对页面的执行产生有害的影响。name的值被抛出范围之外,这可能会影响目标元素等。如果您查看这个,并在加载后再次单击Run,您会注意到它会自动打开一个新选项卡。这是因为name的原始值已被删除,页面不知道真正打开的位置

一般来说,最好总是用var关键字声明变量,因为这样可以更容易地遵循该变量的范围,避免它们可能导致的不可预见的问题

正如Pointy所指出的,ECMAScript 5中引入的“use strict”pragma实际上禁止在没有var关键字的情况下声明变量。

使用关键字var可确保变量的作用域正确。如果不使用关键字,JavaScript将自动将变量创建为全局范围,这可能会在以后执行页面时引起问题

name = 'Bic'; // implicitly global

function myFunc() {
    var name = 'John'; // this variable is scoped here
    console.log(name); // John
    getName(); // Bic
}

function getName() {
    console.log(name); //Bic
}

myFunc();
getName();
在上面的代码中,我声明了一个全局名称和一个作用域名称。请注意,在myFunc完成执行后,全局名称将保留。名称是大多数HTML元素的属性。在这个特定的答案中,我没有var关键字的名称声明可能会对页面的执行产生有害的影响。name的值被抛出范围之外,这可能会影响目标元素等。如果您查看这个,并在加载后再次单击Run,您会注意到它会自动打开一个新选项卡。这是因为name的原始值已被删除,页面不知道真正打开的位置

一般来说,最好总是用var关键字声明变量,因为这样可以更容易地遵循该变量的范围,避免它们可能导致的不可预见的问题


正如Pointy所指出的,ECMAScript 5中引入的“use strict”pragma实际上禁止在没有var关键字的情况下声明变量。

根据定义,声明变量需要var关键字。但是,还有其他创建变量的方法,例如将变量包含在正式参数列表中:

function foo(a, b, c) {...}

在这里,a、b和c的创建或多或少都像是用var声明的一样。在其他答案中指出了创建没有var的变量的不良影响。

根据定义,声明变量需要var关键字。但是,还有其他创建变量的方法,例如将变量包含在正式参数列表中:

function foo(a, b, c) {...}

在这里,a、b和c的创建或多或少都像是用var声明的一样。在其他答案中指出了创建没有var的变量的不良影响。

这是必要的,而且您肯定应该用var在适当的范围内声明变量。在严格模式下,未能声明变量是一个运行时错误。随机污染全局范围是非常糟糕的。@Andy-这是一篇有趣的阅读,很好的文章!这是必要的,而且您肯定应该使用var在某个适当的范围内声明变量。在严格模式下,未能声明变量是一个运行时错误。随机污染全局范围是非常糟糕的。@Andy-这篇文章读起来很有趣,很好!在严格模式下,未声明的变量会导致错误。在严格模式下,未声明的变量会导致错误。