【发布时间】:2018-08-08 23:10:50
【问题描述】:
查看 javascript 表达式:
return product.id === +id;
我以前从未在像这样的变量前面看到过+ 符号...有什么想法吗?
【问题讨论】:
-
查看 javascript 中的类型强制 - 甚至是一元
+ -
不,不管
product.id是什么,它都会把它变成一个数字。 -
这基本上是一种“强迫” JS 做正确事情的愚蠢方式。写这篇文章的人使用
===来确保JS 确实不 使用强制,然后他们立即强制它使用强制表达式将id的值强制为一个数字。正确的意向代码等效项是product.id === parseInt(id, 10); -
实际上你会 parseFloat 而不是 parseInt 是(几乎)等价的,因为一元 + 不会产生整数,它会产生一个数字 - 除了
+"123bob" === NaN和pareFloat("123bob") === 123- 所以它不是 @987654330 @它是similar but not the same -
parseFloat 仅在产品标识符使用小数值的情况下才有意义。这几乎是不可能的,所以:这里明显的选择是
parseInt(id, 10),但根据上下文,它也可能是parseFloat(id)。
标签: javascript