用Javascript减去两个字符串并键入强制

时间:2019-01-11 19:15:19

标签: javascript

为什么Javascript会为-运算符而不是+键入强制?

str = "2"
console.log(str+str)
console.log(typeof(str+str))
console.log(str-str)
console.log(typeof(str-str))

3 个答案:

答案 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

链接以供进一步阅读:-

You don't know js

Coercion explained