为什么javaScript中的这个表达式计算为30?
"37" - 7 // evaluates to 30 in javascript
答案 0 :(得分:3)
在这种情况下,JavaScript隐含转换" 37"到37(数字)并评估表达式。 Bcz' - '使用字符串时,运算符没有意义。
如果JavaScript需要一个数字,它会尝试将您提供的值转换为数字(如果无法执行有意义的转换,则转换为NaN)。
例如:
15 + "objects" // => "15 objects"
"5" * "6" // => 30 (both strings converts to number)
1 - "x" // => NaN (string can't be converted to a number)
"50" - 20 // => 30 (one string converted to number)
答案 1 :(得分:0)
subtraction operator将其自身两侧的值转换为Numbers,然后从LRH中减去RHS。
- 让lref成为评估AdditiveExpression的结果。
- 让lval成为GetValue(lref)。
- 让rref成为评估MultiplicativeExpression的结果。
- 让rval为GetValue(rref)。
- 让lnum为ToNumber(lval)。
- 让rnum为ToNumber(rval)。
- 将减法运算的结果返回到lnum和rnum。
醇>
答案 2 :(得分:0)
JavaScript可以根据命令计算表达式。在你的情况下,你使用37(一个字符串)并尝试(我假设删除7 ???),所以你得到30作为结果。
由于JavaScript不知道,究竟如何处理这个减去,它只是转换" 37"到一个数字并减去7,所以你的结果是30.如果你要使用" 37" + 7代替,7将转换为字符串,JavaScript将这两个字符串连接成377。