请有人一步一步地解释这个Javascript代码

请有人一步一步地解释这个Javascript代码,javascript,loops,Javascript,Loops,我学习Javascript我发现了这段代码,但不明白它在做什么。请有人一步一步地给我解释一下 var ar1 = [1, 5, 6, 4, 3, 5, 100, -20]; function funDo(ar) { for (k = 0, i = 1, temp = ar.length - 1; k < temp; k++) i = (i << 1) + 1; for (; i > 0; i--) { for (k = 0

我学习Javascript我发现了这段代码,但不明白它在做什么。请有人一步一步地给我解释一下

var ar1 = [1, 5, 6, 4, 3, 5, 100, -20];

function funDo(ar) {
    for (k = 0, i = 1, temp = ar.length - 1; k < temp; k++) i = (i <<
        1) + 1;
    for (; i > 0; i--) {
        for (k = 0, sum = 0, temp2 = []; k < ar.length; k++)
            if ((i >> (k)) % 2) {
                sum += ar[k];
                temp2.push(ar[k]);
            }
        if (sum == 10) console.log(temp2);
    }
}
funDo(ar1);
var ar1=[1,5,6,4,3,5100,-20];
基金功能(ar){
对于(k=0,i=1,temp=ar.length-1;k>(k))%2){
总和+=ar[k];
temp2.push(ar[k]);
}
if(sum==10)console.log(temp2);
}
}
基金会(ar1);
funDo(ar)
在(整数数组)
ar
中找到
ar
的“所有序列”,其总和为
==10
(…并将它们记录到控制台)


请随时发表评论,询问更多细节。:-)

你为什么想理解这段代码?尝试理解JavaScript。。。尽量理解简单、优雅和有用的代码。我建议您不要试图理解这个看似无用的“有趣”代码,因为它根本没有什么有趣的作用。理解此代码对您没有任何帮助。它只运行两个循环;在这些循环中执行一些随机(afaik)操作,然后将一些随机(afaik)数字打印到控制台。最好试着理解已知问题的代码。有时我在循环方面有问题,这段代码有点像我收到的任务,但我看到了这段代码,它使一些东西对我来说没有用处,这就是为什么我寻求帮助,也许我不懂一些东西。但是谢谢你的帮助:)