Javascript:如果表达式继续执行if作用域代码,则返回false

Moo*_*oon 5 javascript

我正在经历一些Javascript的最奇怪的行为.

即使if语句中的表达式求值false,我的代码仍在if block继续执行.

这是代码片段:

if (view.leftCols !== null) {
    var leftCols = view.leftCols.split(',');

    for (var lc = 0; lc < leftCols.length; lc++) {
        var lcv = leftCols[lc].split(':');
        var lcol = lcv[0];

        Array.add(allCols, lcol);

        try {
            var lwidth = lcv[1] - MyWorkGrid.getColWidth(lcol);

            if (lcol === 'Edit') {
                if ($.browser.msie && parseInt($.browser.version) <= 8) {
                    lwidth = 23;
                }
            }

            // this if statement fails.
            if (lwidth > 0) {
                grid.SetWidth(lcol, lwidth);
            }
        } catch (e) {
        }

         grid.MoveCol(lcol, 0, 1, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Firebug截图:

萤火

有任何想法吗?

T.J*_*der 12

尽管Firebug中突出显示了这一行,你确定它真的被执行了吗?我在Firebug(以及Chrome调试器的早期版本)中看到过这种行为,他们有时会突出显示一行代码,好像他们已经步入它,而不会实际执行该行.

所以我会插入一些明确的东西(比如一个console.log("lwidth = " + lwidth);进入if语句的主体,看看它是否真的执行.答案可能是Firebug只是突出显示/显示该行当前错误,而实际上没有运行代码.