javascript如果声明问题

T.T*_*.T. 3 javascript

function valid()
{
    begin_checked = false;
    end_checked = false;

    alert("begin_checked: " +begin_checked);
    alert("end_checked: " +end_checked);

    if (document.dd.begin.checked.length == undefined || document.dd.end.checked.length == undefined )
    {
        alert("In undefined");
    }

    alert("end");
}
Run Code Online (Sandbox Code Playgroud)

当if语句为false时,它永远不会报警("结束")?如果是真的,它会正确执行.为什么?

Kev*_*ell 8

可能存在空指针异常,并且您没有输出到浏览器的错误.

你需要一些输出来检查:

alert(document);
alert(document.dd);
alert(document.dd.begin);
alert(document.dd.begin.checked);
alert(document.dd.end);
alert(document.dd.end.checked);
Run Code Online (Sandbox Code Playgroud)

如果从任何这些中获取未定义,那么您的代码将无法正确执行.

编辑:此外,这里的其他答案都有很好的信息.阅读这些内容.

编辑2:替代 - 在try/catch块中包围您的代码并提醒错误:

function valid(){

    try{
        begin_checked = false;
        end_checked = false;

        alert("begin_checked: " +begin_checked);
        alert("end_checked: " +end_checked);

        if (document.dd.begin.checked.length == undefined || document.dd.end.checked.length == undefined ){
            alert("In undefined");
        }

        alert("end");

    } catch (e) {
        alert(e);
    }

}
Run Code Online (Sandbox Code Playgroud)