什么是JavaScript while循环在这里做什么?

时间:2011-03-18 13:21:53

标签: javascript while-loop

这里的JavaScript代码是什么,特别是while循环:

function setAjaxLinks(){
    var links = document.body.getElementsByTagName("a");
    var linkL = links.length;

    while (linkL--) {
        if (!links[linkL].href.match('#')) {
            mj.pageLoad(links[linkL]);
        }
    }
}

我知道“mj”并不意味着什么,但一般的要点是什么?

6 个答案:

答案 0 :(得分:5)

它遍历页面上从最后一个到第一个(递减)的所有链接(a-tags)。

如果找到的链接中没有#符号,则会调用mj.pageLoad函数并将相关链接作为参数。

这是一个打击:

function setAjaxLinks(){
    //find all <a> tag elements on the page
    var links = document.body.getElementsByTagName("a");
    //get the amount of <a> tags on the page
    var linkL = links.length;
    //loop over all <a> tags on the page from last to first
    while (linkL--) {
        //if the href attribute on the current <a> tag has a # sign in it
        if (!links[linkL].href.match('#')) {
            //then call this function (and from the name of the function convert it to an ajax call) 
            mj.pageLoad(links[linkL]);
        }
    }
}

答案 1 :(得分:4)

表达式:

linkL--

linkL递减1并返回先前的linkL值。

表达式:

while (someIntValue) { ... }

someIntValue不是0时运行循环体。它相当于:

while (someIntValue != 0) { ... }

所以:

while (linkL--) { ... }

将使用linkL(在循环内)运行循环,从其初始值减1到零,包括零。

答案 2 :(得分:2)

这是一个反向,在许多/大多数情况下比“for”更快:请参阅此处的引文:http://blogs.oracle.com/greimer/entry/best_way_to_code_a

答案 3 :(得分:1)

它基本上是一个反向for循环。从“顶部”开始并向下计数直到达到0.在执行顺序不相关的情况下,for循环的效率更高。

答案 4 :(得分:1)

基本上它遍历集合links,并检查它们是否包含#

linkL存储集合的长度。 while检查此变量的布尔值,然后将其减1。因此,当linkL达到零时,它仍然会运行,并且在下一个转弯中零将评估为false,因此它会停止。

如果您在linkL后检查while,则会为-1。

答案 5 :(得分:0)

它看起来像一个页面预加载器。

while循环递减linkL,直到达到0并迭代每个a标记。