https://github.com/lodash/lodash/blob/3.7.0/lodash.src.js#L2781
此代码段+start
中start = start == null ? 0 : (+start || 0);
的含义是什么?
在我看来,+start
等于0+start
。我们已经知道start
是一个数字。
那么为什么不使用start = start == null ? 0 : (start || 0);
?
有什么我误解的吗?我真的很困惑。
答案 0 :(得分:2)
在该方法开始时,您不知道start
是一个数字。文档说它应该是,但什么时候文档总是完全正确?
+start
和0+start
之间没有任何真正的区别,因为两者都会将start
强制转换为数字(-start
也是如此,但它显然会反转过程中的标志)。
假设文档是正确的且start
已经是一个数字,+start
是一个无操作,并且不会导致任何问题或破坏任何内容。如果start
不是数字(下一个最可能的类型可能是字符串),那么在使用它之前会将其强制转换为数字。