gpt4 book ai didi

JavaScript 数组 + 数组 = 字符串?

转载 作者:行者123 更新时间:2023-11-29 17:07:31 28 4
gpt4 key购买 nike

当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。

JavaScript

[1, 2] + [3, 4] = "1,23,4"

python

[1, 2] + [3, 4] = [1, 2, 3, 4]

我并不是要就哪种语言更好展开一场口水战。但是 JavaScript 对我来说毫无意义。 JavaScript 这样做有逻辑上的原因吗?或者这只是语言的怪癖?

最佳答案

This is how the Addition Operator (+) is defined..

+ 运算符对其他值类型(如数组)具有“特殊含义/重载”,并且 ECMAScript 中的行为独立于任何其他语言。

The production AdditiveExpression : AdditiveExpression + MultiplicativeExpression is evaluated as follows:

  1. Let lref be the result of evaluating AdditiveExpression.
  2. Let lval be GetValue(lref).
  3. Let rref be the result of evaluating MultiplicativeExpression.
  4. Let rval be GetValue(rref).
  5. Let lprim be ToPrimitive(lval).
  6. Let rprim be ToPrimitive(rval).
  7. If Type(lprim) is String or Type(rprim) is String, then Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)
  8. Return the result of applying the addition operation to ToNumber(lprim) and ToNumber(rprim). See the Note below 11.6.3.

这种情况下的转换相当微妙,但它是数组值的结果,是没有相应原始类型的对象,作为 [ToPrimitive] 操作的结果调用了“toString” .因此,规则应用大致如下。

   [1,2] + [3,4]
-> [1,2].toString() + [3,4].toString() // Rules #5 and #6
-> "1,2" + "3,4" // Rule #7
-> "1,23,4"

关于JavaScript 数组 + 数组 = 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23450642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com