奇怪的while循环语法

A weird while loop syntax

本文关键字:循环 语法 while      更新时间:2023-09-26

此代码: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回路工作吗?这样的语法正确吗?

编辑:我确实理解这段代码要做什么,但语法对我来说并不明显。

它工作是因为第一个语句被执行,并且由于逗号操作符,只有第二个语句被考虑求值,它将求值为truefalse

这个while循环是正确的,因为在while语句中被,分隔,所以最后一个语句的值将被用作while的条件。

div.getElementsByTagName('i')[0]nullundefined时,while循环结束。