【问题标题】:Why do arrays coerce in a specific way? [duplicate]为什么数组以特定方式强制? [复制]
【发布时间】:2021-09-23 12:55:40
【问题描述】:

我很难理解为什么下面的示例最终会得到这种结果。

String([,,,]); // ',,' why?


Number([8,8]); // NaN    why?

如果可能,请详细说明

【问题讨论】:

  • 你为什么还要尝试使用数组?
  • 因为数字用 . 分隔小数点。而不是 with ,用于将数组连接到字符串。
  • 在第一种情况下,创建数组时会忽略尾随逗号。因此 2 个逗号而不是 3 个。
  • @pilchard 很奇怪,上一个问题似乎与这个问题重叠:Curious behavior of String()。我只能假设有一门课程会发出这些奇怪的任务,这让我大吃一惊为什么

标签: javascript coercion


【解决方案1】:

注意String 调用对象上的toString 方法,对于数组,这相当于调用Array#join

String([,,,]);

[,,,] 是一个包含 3 个空元素的数组。然后[,,,].join() 将在空元素之间放置两个逗号作为分隔符,从而产生",,"

Number([8,8]);

[8,8].join() 返回"8,8",不能解析为Number,所以会产生NaN

【讨论】:

  • 非常感谢您的回答,不幸的是,我没有足够的声誉投票。这是我在这里的第一天。
  • @Shaqe 没问题。
  • @Shaqe 如果这回答了你的问题,请考虑accepting它。
猜你喜欢
  • 2013-07-07
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多