这是一个全局变量吗?

时间:2014-12-29 20:43:29

标签: javascript variables global

以下变量是全局变量吗?

var a = 10, b = 20;
c = 30;

没有“var”的任何变量都是全局变量。那么变量“b”也是一个全局变量吗?

6 个答案:

答案 0 :(得分:4)

没有; var语句可以在逗号分隔列表中声明多个变量。

请注意声明

var a = 1, b = c = 3;

c创建为全局变量(因为它未被声明)。

答案 1 :(得分:1)

c绝对是全球性的;您可以使用console.log(window.c === 30)

进行测试

如果var声明不在函数内,则其他两个只是全局的。

请记住,在 strict mode 中,对未声明的变量的赋值将导致 ReferenceError

答案 2 :(得分:0)

假设第一个语句不在全局范围内,那么没有ab都是全局变量,因为你在第一个语句中定义了一个vars列表。但是,如果您执行了以下操作:

c = 30, d = 90;

您将cd定义为全局变量,无论您定义它们的范围如何。

答案 3 :(得分:0)

“没有'var'的任何变量都是全局的”不一定是真的。 var只是在当前范围内声明一个变量。默认范围(假设您在浏览器中运行此JS而不是像node.js一样)是window对象。

基本上,是的,这三个变量都是全局的。

进一步阅读我所指的范围和var关键字:You Don't Know JS

以上是假设您没有以严格模式运行/ "use strict"; - 如果您处于严格模式,c将抛出一个ReferenceError,因为您尚未将其声明为变量。

答案 4 :(得分:0)

" B"不被视为全局变量,只要用逗号分隔,就可以声明多个变量。 " C"是该语句中唯一的全局变量。您不能在用逗号分隔的同一行中声明全局变量和局部变量。

a = 10, b = 5;  

全球宣言

var a = 10, b = 5;

本地声明

此外,您可以像这样声明它们:

var a = 10, b = 5;

在所有其他功能之外,它将是全球性的。

答案 5 :(得分:0)

var a = 10,b = 20; c = 30;

是的,当然变量c在这里是全局的。如果你定义一个没有" var"的变量。在任何范围内的关键字,变量都被视为全局变量,因为它变为全局范围的一部分。

表示var a和b:

如果在函数内声明它们,它们将被视为局部变量(因为它们将成为局部范围/函数范围的一部分)。 如果它们被声明而不是任何函数的一部分,那么它们将被视为全局变量(因为它们被添加到全局范围中)。