gpt4 book ai didi

javascript - 有人可以从 JsFromHell : Sum of a numeric array in JavaScript 解释这个函数吗

转载 作者:行者123 更新时间:2023-11-29 16:23:37 25 4
gpt4 key购买 nike

这就是 JsFromHell 定义一个函数来查找数字数组总和的方式 (http://jsfromhell.com/array/sum)

sum = function(o){
for(var s = 0, i = o.length; i; s += o[--i]);
return s;
};
//sum([1, 2, 3, 4, 5, 6, 7, 8, 9])

有人可以解释一下 for 循环的第二部分发生了什么吗? “我;”是什么意思?它看起来与 i >= 0 相同。但这会返回 NaN。

最佳答案

JavaScript 有多种方法可以将非 bool 值强制转换为 truefalse。其中之一与数字有关:零是 false,任何其他数字都是 true

对于字符串,空字符串为false,其他为truenull 值被强制为 false,就像有点禅意的“未定义”非值一样。

你可以这样写代码:

for (var s = 0, i = o.length; i > 0; s += o[--i]);

而且它可能会更有效率。 (或者它可能不是;这是一种只有库维护者才应该担心的微优化,因为下周浏览器 vendor 可能会改进他们的解释器并颠覆这种情况。)

最后,如果您得到一个 NaN,这意味着您实际上没有数字数组。如果在“for”循环的第三部分数组中有一个东西不能完全转换为数值,您将得到一个 NaN 结果。 编辑——哦等等,我明白了;你试过 i >= 0 而不是 i > 0。这意味着循环将尝试访问未定义的 o[-1]。当您尝试将其转换为数字时,这会给您一个 NaN

关于javascript - 有人可以从 JsFromHell : Sum of a numeric array in JavaScript 解释这个函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com