如何与在JavaScript中为字符串加数组定义的加运算符串联

时间:2019-07-03 11:34:06

标签: javascript

可以安全地假设"test=" + ['abc', 'xyz']将为所有遵循标准的JavaScript执行环境产生"test=abc,xyz"吗?

2 个答案:

答案 0 :(得分:2)

看看ECMAScript 2015 Language Specification之后,只要toString没有被覆盖,我就可以确认预期的行为:

Screenshot from Spec

ToString将通过ToPrimitive进行求值,而OrdinaryToPrimitive则将提示设置为字符串,然后为数组求toString,然后最终调用数组curl --user admin:admin -vvv "http://localhost:3000/api/dashboards/db" -X POST -d @My_Metrics.json -H 'Content-Type: application/json'

答案 1 :(得分:1)

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);