【问题标题】:Refer to Array in Declaration in Javascript请参阅 Javascript 中声明中的数组
【发布时间】:2018-09-11 04:30:08
【问题描述】:

我想知道我是否可以在自己的声明中引用我在 Javascript 中声明的数组... 见代码

var data = [["foo",23],["bar",data[0][1]+6]];

我希望该数组为 ["foo",23]["bar",29]

谢谢!

【问题讨论】:

  • 你不能真正在数组中使用data(当时你正在创建一个名为data的新局部变量。为什么不创建一个包含var fooArr = ["foo", 23], barArr = ["bar", foo[1]+6], data = [fooArr, barArr];的变量。更有趣的是为什么你认为你需要这种结构
  • 这是一个奇怪的问题或糟糕的实际例子。我想知道你为什么要这样做,因为 23 是一个硬编码的数字,而 23+6 是 29,如果数字 23 来自一个变量(比如说num),你也可以这样做var data = [["foo",23]["bar",29]],那么你可以这样做["foo",num]["bar",num+6]如果你有一个现有的数组并且需要一个基于先前值的数组,你可以使用 reduce 或 zip/map

标签: javascript arrays declaration definition


【解决方案1】:

JavaScript 引擎会首先解析数组初始值设定项,它不会找到任何“数据”定义并会抛出错误。所以,这行不通。

【讨论】:

  • 澄清一下:会抛出一个错误,因为此时data 将是undefined 并且其上不能存在0 属性。它不会仅仅因为 data 不存在(var data; 被提升)而引发错误,但像 letconst 这样的东西会因为这个原因。
【解决方案2】:

当您引用尚未创建的变量时,它将不起作用。此时数据仍然未定义。所以你需要先完成声明语句,然后引用变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2021-09-25
    • 1970-01-01
    • 2018-11-01
    • 2015-03-01
    相关资源
    最近更新 更多