【问题标题】:What does the "var" before a JavaScript array initialization refer to, the elements of the list or the array itself? [duplicate]JavaScript数组初始化之前的“var”指的是列表的元素还是数组本身? [复制]
【发布时间】:2019-07-02 18:26:58
【问题描述】:

我被教导在 JavaScript 中使用“let”来初始化数组,但我最近发现也可以使用“var”。

var evenNumbers=[2,4,6,8];

我知道可以使用 var 在 JavaScript 中初始化函数,如下所示

var hello=function(){};

很自然,我假设用于初始化变量的“var”指的是数组的名称,在本例中为 evenNumbers。

不过我最近也了解到,在我认为是 Java 类型语言的祖父的 C 中初始化数组时,数组中使用的变量类型用于初始化数组调用。

int evenNumbers[]={2,4,6,8};

显然在这种情况下,int 指的是列表的元素,因为数组不是 int。

因此,我假设 JavaScript 中数组调用之前的 var 指的是列表的元素。我尝试通过将错误的强类型应用于新的 JavaScript 变量来测试它,例如

int newYearsResolutions=["Stop procrastinating"];

这给了我一个意想不到的标识符,但这并没有太大帮助,因为数组不是 int,“停止拖延”也不是 int。然后我尝试了

int evenNumbers=[2,4];

这给了我同样的错误,让我回到原来的结论,即此处命名的 var 是“evenNumbers”而不是整数 2 和 4,但我仍然觉得我可能遗漏了一些东西。

因此, var evenNumbers=[2,4] 似乎命名了 evenNumbers 变量,而不是数组的元素。我只是想仔细检查一下是不是这样。

【问题讨论】:

  • 是什么让您认为 Javascript 是一种“类 Java 语言”?不是,Java 位只是来自 90 年代网景公司所做的旧营销噱头
  • 这是来自 MDN 的 Statements and declarations 列表。没有int 关键字。
  • JavaScript,直到最近,只有 var 声明。 Let 和 const 在 ES6 中是新的。但是 legacy 将允许 var 继续作为有效代码
  • 不要太在意这些细节。您可以使用var 代替letconst 没有任何麻烦。它比那更简单。 var 是可变的,它可以存储任何类型的数据。您不必指定类型。可能是:var varName = [1, 2, 3].(数组)、var varName = "text".(字符串)。依此类推:对象、函数、int、布尔值。
  • 是的,Liam 说的 ;) JavaScript 不是 Java。古老的智慧:Java 之于 JavaScript,就像火腿之于仓鼠一样。

标签: javascript arrays types casting var


【解决方案1】:

JavaScript 不是类型化语言。 int 不是保留字,因此没有做任何事情。 var, let, const 是分配变量的所有方法 - 无论类型如何。

【讨论】:

  • 我的意思是,数组是变量,还是变量列表?还是两者兼而有之?
  • var 是对数组的引用。把它想象成 C。它只是一个指针。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 2012-12-07
相关资源
最近更新 更多