javascript中出现意外的嵌套循环行为

时间:2012-11-01 19:35:55

标签: javascript

我正在实施一种排序,我遇到了一些意想不到的行为:

var searches = ['beta', 'alpha'];
var i = 0; j = 0;

for(i = 0; i < searches.length; i++){
        min = i;

        // first time through, i = 0
         alert(i); 
        for(j = i; j<searches.length; j++);
        {
            // first time through j = 2. If i = 0, how does j = 2?
             alert(j); 
            // .. sort code
        }
}

实际上,j总是2.为什么在进入for循环时j不被设置为i?

这是jsfiddle: http://jsfiddle.net/w2kK9/3/

2 个答案:

答案 0 :(得分:6)

你有一个错位的分号:

for (j = i; j < searches.length; j++); // <--

其余部分被解释为在执行循环之后运行的块(j == 2时)。

把它取出来并且工作正常。

答案 1 :(得分:2)

你的嵌套for循环没有做任何事情:

for(j = i; j<searches.length; j++); // <- Your for loop proceeds only on this line.

删除半结肠。