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