sách gpt4 ai đã đi

Mảng JavaScript + Mảng = Chuỗi?

In lại 作者:行者123 更新时间:2023-11-29 17:07:31 29 4
mua khóa gpt4 Nike

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

JavaScript

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

Trăn

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

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

1 Câu trả lời

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

+ 运算符KHÔNG对其他值类型(如数组)具有“特殊含义/重载”,并且 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/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com