为什么Javascript会为-运算符而不是+键入强制?
str = "2"
console.log(str+str)
console.log(typeof(str+str))
console.log(str-str)
console.log(typeof(str-str))
答案 0 :(得分:2)
因为-
有意义的唯一数据类型是数字。 +
运算符对字符串和数字操作数具有含义。
在JavaScript中,通常情况下,像x + y
这样的表达式必须推迟到运行时才能弄清楚它的含义。这就是类型转换规则的用处。对于-
,它知道操作数必须是数字,因此在运行时要做的工作较少。
答案 1 :(得分:2)
-
运算符仅用于数字减法
答案 2 :(得分:2)
对于字符串+
表示串联。并且所有其他数学运算符的工作方式都与普通数学运算符相同(因此,这些字符串的类型被强制了)
let str = '2'
console.log( str + str )
console.log( str - str ) // 2 - 2 = 0
console.log( str * str ) // 2 * 2 = 4
console.log( str / str ) // 2 / 2 = 1
链接以供进一步阅读:-