const a: string = "abc";
const b: string[] = ["def", "ghi"];
const c = a + b在string[]中生成以逗号分隔的abcdef,ghi项字符串。如何让typescript知道这不应该放在首位?
发布于 2019-01-18 20:10:07
c = a + b实际上是{} + \[\]
{} + []
这里的{}没有被解析为一个对象,而是一个空块(§12.1,至少只要你没有强制该语句成为一个表达式,稍后会详细介绍)。空块的返回值为空,因此该语句的结果与+[]相同。一元+运算符(§11.4.6)返回ToNumber(ToPrimitive(操作数))。正如我们已经知道的,ToPrimitive([])是空字符串,根据§9.3.1,ToNumber("")是0。
A是{}端的字符串,b (string[])是[]。当您将string对象与字符串数组相加时,javascript会隐式将字符串数组转换为连接的字符串(这是预期的行为)
所以,javascript在这里并没有什么违法之处。
https://stackoverflow.com/questions/54253437
复制相似问题