查看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 一元运算符
一元正减运算符的重要用途是什么?