一个奇怪的while循环语法

时间:2014-08-03 10:23:43

标签: javascript while-loop

此代码:http://ajaxian.com/archives/attack-of-the-ie-conditional-comment

var ie = (function(){
    var undef, v = 3, div = document.createElement('div');

    while (
        div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i>< ![endif]-->',
        div.getElementsByTagName('i')[0]
    );

    return v > 4 ? v : undef;
}());

您能否向我解释为什么这个while循环有效?这甚至是正确的语法吗?

编辑:我确实理解这段代码正在尝试做什么,但语法对我来说并不明显..

2 个答案:

答案 0 :(得分:1)

它起作用是因为第一个语句被执行,并且由于逗号运算符,只考虑第二个语句用于评估,评估为truefalse

答案 1 :(得分:0)

while循环是正确的,因为while语句由,分隔,因此最后一个语句的值将用作while的条件。

只要div.getElementsByTagName('i')[0]nullundefined,此while循环就会结束。