为什么表达式逻辑表达式 'product.id === +id;' 中的加号?

  • 本文关键字:表达式 +id id product javascript
  • 更新时间 :
  • 英文 :


查看javascript表达式:

return product.id === +id;

我以前从未在这样的变量前面看到过+符号......思潮?

如果成功,它将变量转换为数字: +id 等于 Number(id(。如果转换失败,它将返回 NaN

变量前面的加号称为一元运算符,用于将变量转换为数字。如果值为数字,则运算结果将为数字,否则为NaN

您可以大致将+运算符的功能等同于parseFloat。但是,请注意,前者只能解析数字字符串,而后者可以提取数值,即使它后面跟着另一个不是的数字字符串。

例:

var a = "0x";
console.log("Unary Operator:", +a);
console.log("parseFloat:", parseFloat(a, 16));


在您的特定情况下,它用于确保如果转换为数字,id严格等于product.id。如果id不是数字,函数将返回false,因为product.id != NaN,即使product.id本身等于NaN

例:

var
id1 = 13,
id2 = "13",
id3 = "a13";
console.log("number:", id1);
console.log("numeric string:", +id2);
console.log("non-numeric string:", +id3);
console.log("NaN !== NaN:", +id3 !== +id3);

只是一个注意事项:

尽管NaN字面意思是"Not a Number",但如果你使用typeof NaN结果将是"number",即使NaN不是数学意义上的数字。


相关主题:

  • 变量前加号的目的是什么?

  • 在 JavaScript 中解释 +var 和 -var 一元运算符

  • 一元正减运算符的重要用途是什么?

最新更新