日期:2014-05-16  浏览次数:20326 次

问个弱弱的while问题...
function   RegExpTest(){
    var   ver   =   Number(ScriptEngineMajorVersion()   +   ". "   +   ScriptEngineMinorVersion())
    if   (ver   > =   5.5){                                   //   测试   JScript   的版本。
        var   src   =   "The   rain   in   Spain   falls   mainly   in   the   plain. ";
        var   re   =   /\w+/g;                               //   创建正则表达式模式。
        var   arr;
        while   ((arr   =   re.exec(src))   !=   null)
              document.write(arr.index   +   "- "   +   arr.lastIndex   +   "\t "   +   arr);
    }
    else{
        alert( "请使用   JScript   的更新版本 ");
    }
}


--------------------------------

上面是从MS的JS手册里摘的一段?

我不明白while的条件
(arr   =   re.exec(src))   !=   null
我认为这个条件永远是true...
应该是个死循环啊...
为什么把正则匹配到的词都读出来后就结束循环了呢?
而且为什么会读出所有的匹配?


var   re   =   /\w+/g;
我把正则条件改了改..
/\w+/   只匹配第1个词
这时候却成为了死循环?
这和我本来认为可能是死循环却一致了?为什么?
如果按当没匹配的时候自动条出循环..为什么仅一个匹配的时候却不是?

------解决方案--------------------
null == undefined 返回 true
------解决方案--------------------
如果 exec 方法没有找到匹配,则它返回 null
------解决方案--------------------
alert((arr = null) != null);
false