查看JavaScript表达式:
return product.id === +id;
在……思考之前,我从未见过像这样的变量前面有+
符号吗?
答案 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
这个词的意义。
相关主题: