为什么给出以下表达式在javascript中评估为30?

时间:2016-05-03 10:06:50

标签: javascript

为什么javaScript中的这个表达式计算为30?

"37" - 7 // evaluates to 30 in javascript

3 个答案:

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

  
      
  1. 让lref成为评估AdditiveExpression的结果。
  2.   
  3. 让lval成为GetValue(lref)。
  4.   
  5. 让rref成为评估MultiplicativeExpression的结果。
  6.   
  7. 让rval为GetValue(rref)。
  8.   
  9. 让lnum为ToNumber(lval)。
  10.   
  11. 让rnum为ToNumber(rval)。
  12.   
  13. 将减法运算的结果返回到lnum和rnum。
  14.   

答案 2 :(得分:0)

JavaScript可以根据命令计算表达式。在你的情况下,你使用37(一个字符串)并尝试(我假设删除7 ???),所以你得到30作为结果。

由于JavaScript不知道,究竟如何处理这个减去,它只是转换" 37"到一个数字并减去7,所以你的结果是30.如果你要使用" 37" + 7代替,7将转换为字符串,JavaScript将这两个字符串连接成377。