[英]How is concatenation with the plus operator defined for String plus Array in JavaScript
是否可以安全地假設"test=" + ['abc', 'xyz']
將為所有遵循標准的JavaScript執行環境生成"test=abc,xyz"
?
在查看了ECMAScript 2015語言規范之后 ,只要未覆蓋toString
,我就可以確認預期的行為:
將使用ToPrimitive
評估ToString
, ToPrimitive
評估該Array的OrdinaryToPrimitive
,並將提示設置為string,然后將其最終調用Arrays toString
。
可能有99%的時間是安全的,但是由於它是JavaScript,因此您也應該期待猴子修補。
即使您在安全的環境中運行,我仍然會選擇明確說明:
const arr = ['abc', 'xyz'];
const str = `test=${arr.join(',')}`;
為什么?
1%是怎么回事?
人們可以並且會猴子修補JavaScript。 你在那里可以承受風險嗎?
Array.prototype.toString = () => '🌯🌯🌯'; const arr = ['abc', 'xyz']; const str = 'test=' + arr; console.log(str);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.