为什么我得到-'54'+30表示为 -24 的结果,但是当我尝试从表达式中删除(减号)-时,这只是字符串的连接并给出5430作为输出。

console.log(-'54'+30)
console.log('54'+30)

最佳答案

因为unary negation具有比加法更高的operator precedance

一元求反还将其操作数转换为Number Per ECMA Spec 2017:



对于-'54'+30,步骤为:

  • 评估一元-
  • 右边的操作数是String,因此它变成了Number
  • 评估+
  • 左操作数是由于步骤2而产生的Number,因此+操作是加法运算,而不是串联
  • 关于javascript - 用Javascript为什么-'54' +30的结果是-24(在JavaScript中键入强制),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51366414/

    10-13 04:26