以下变量是全局变量吗?
var a = 10, b = 20;
c = 30;
没有“var”的任何变量都是全局变量。那么变量“b”也是一个全局变量吗?
答案 0 :(得分:4)
没有; var
语句可以在逗号分隔列表中声明多个变量。
请注意声明
var a = 1, b = c = 3;
将c
创建为全局变量(因为它未被声明)。
答案 1 :(得分:1)
c
绝对是全球性的;您可以使用console.log(window.c === 30)
如果var
声明不在函数内,则其他两个只是全局的。
请记住,在 strict mode 中,对未声明的变量的赋值将导致 ReferenceError 。
答案 2 :(得分:0)
假设第一个语句不在全局范围内,那么没有a
和b
都是全局变量,因为你在第一个语句中定义了一个vars列表。但是,如果您执行了以下操作:
c = 30, d = 90;
您将c
和d
定义为全局变量,无论您定义它们的范围如何。
答案 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:
如果在函数内声明它们,它们将被视为局部变量(因为它们将成为局部范围/函数范围的一部分)。 如果它们被声明而不是任何函数的一部分,那么它们将被视为全局变量(因为它们被添加到全局范围中)。