为什么在lodash中使用`+ start`而不是`start`

时间:2015-04-23 16:03:36

标签: javascript lodash

https://github.com/lodash/lodash/blob/3.7.0/lodash.src.js#L2781

此代码段+startstart = start == null ? 0 : (+start || 0);的含义是什么?

在我看来,+start等于0+start。我们已经知道start是一个数字。

那么为什么不使用start = start == null ? 0 : (start || 0);

有什么我误解的吗?我真的很困惑。

1 个答案:

答案 0 :(得分:2)

在该方法开始时,您不知道start是一个数字。文档说它应该是,但什么时候文档总是完全正确?

+start0+start之间没有任何真正的区别,因为两者都会将start强制转换为数字(-start也是如此,但它显然会反转过程中的标志)。

假设文档是正确的且start已经是一个数字,+start是一个无操作,并且不会导致任何问题或破坏任何内容。如果start不是数字(下一个最可能的类型可能是字符串),那么在使用它之前会将其强制转换为数字。