为什么下面给出的表达式在javascript中的求值结果为30

Why given below expression evaluates to 30 in javascript?

本文关键字:结果 javascript 表达式 为什么      更新时间:2023-09-26

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

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

在这种情况下,JavaScript implicity将"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)

减法运算符将自身两侧的值转换为数字,然后从LRH中减去RHS。

  1. 设lref是计算AdditiveExpression的结果
  2. 设lval为GetValue(lref)
  3. 设rref是计算乘法表达式的结果
  4. 设rval为GetValue(rref)
  5. 设lnum为ToNumber(lval)
  6. 设rnum为ToNumber(rval)
  7. 返回对lnum和rnum应用减法运算的结果

JavaScript可以根据命令计算表达式。在你的例子中,你使用37(一个字符串)并尝试(我假设去掉7??),所以你会得到30。

由于JavaScript不知道该如何处理这个减号,所以它只需将"37"转换为一个数字,然后将其减去7,结果就是30。如果您使用"37"+7,7将被转换为一个字符串,JavaScript将这两个字符串连接到377中。