簡體   English   中英

如何與在JavaScript中為字符串加數組定義的加運算符串聯

[英]How is concatenation with the plus operator defined for String plus Array in JavaScript

是否可以安全地假設"test=" + ['abc', 'xyz']將為所有遵循標准的JavaScript執行環境生成"test=abc,xyz"

在查看了ECMAScript 2015語言規范之后 ,只要未覆蓋toString ,我就可以確認預期的行為:

Spec的屏幕截圖

將使用ToPrimitive評估ToStringToPrimitive評估該Array的OrdinaryToPrimitive ,並將提示設置為string,然后將其最終調用Arrays toString

可能有99%的時間是安全的,但是由於它是JavaScript,因此您也應該期待猴子修補。

即使您在安全的環境中運行,我仍然會選擇明確說明:

const arr = ['abc', 'xyz'];
const str = `test=${arr.join(',')}`;

為什么?

  1. 意圖更清晰(恕我直言)
  2. 不了解JavaScript的內部原理的人仍然可以理解該代碼

1%是怎么回事?

人們可以並且猴子修補JavaScript。 你在那里可以承受風險嗎?

 Array.prototype.toString = () => '🌯🌯🌯'; const arr = ['abc', 'xyz']; const str = 'test=' + arr; console.log(str); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM