带有多个语句的JavaScript ' if '

JavaScript `if` with multiple statements

本文关键字:if JavaScript 语句      更新时间:2023-09-26

为什么上面的代码可以工作而下面的代码不能?

这个有效:

var i=1
function next() {
    document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    if (i<jsArray.length-2) 
        i++
    else
        i=0
}

这个不行:

var i=1
function next() {
    if (i<jsArray.length-2) 
        i++
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    else
        i=0
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
}

如果您希望在ifelse条件后面有多个语句,则需要将它们包装在一个块中:

function next() {
    if (i<jsArray.length-2) {
        i++
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    }
    else {
        i=0
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    }
}

注意,这在语法上是等价的——if语句后面仍然跟着一条语句(一个块语句)。

语法给出了完整的细节:

IfStatement :
,,,,if ( 表达式 ) 语句 else 语句
,,,,if ( 表达式 ) 语句

这表明if语句只能后跟一条语句。

必须将条件为真时需要执行的代码块放在花括号中。

var i=1
function next() {
    if (i<jsArray.length-2)
    { 
        i++
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    }
    else
    {
        i=0
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    }
}

你需要大括号:

function next() {
    if (i<jsArray.length-2) {
        i++;
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    } else {
        i=0;
        document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i];
    }
}

我还选择添加分号。

对于JS错误/警告,你可能会发现JSLint很有帮助:http://www.jslint.com