为什么在逻辑表达式“ product.id === + id;”中加号?

时间:2018-08-08 23:10:51

标签: javascript

查看JavaScript表达式:

return product.id === +id;

在……思考之前,我从未见过像这样的变量前面有+符号吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

变量前面的加号称为Unary Operator,用于将变量转换为数字。如果值为数字,则运算结果将为数字,否则为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这个词的意义。


相关主题: