js对象属性赋值时,可以用三元表达式为什么不能用if(){}else{}

JavaScript015

js对象属性赋值时,可以用三元表达式为什么不能用if(){}else{},第1张

for (var i = 0 i < nodes1.length i++) {

    if (nodes1[i].nodeName == "P" && nodes1[i].nodeType == 1) {

        if(i%2==0){

            nodes1[i].style.backgroundColor = "yellow"

        }else{

            nodes1[i].style.backgroundColor = "red"

        }

    }

}

if(){}else{} 是语句,是没有返回值的,而三元表达式则是表达式,是可以直接赋值的。所以你不能想当然就这么用。

如果你真想获得类似三元表达式的效果,可以这样:

for (var i = 0 i < nodes1.length i++) {

    if (nodes1[i].nodeName == "P" && nodes1[i].nodeType == 1) {

        nodes1[i].style.backgroundColor = function(){

            if(i%2==0){   //把if语句放入一个匿名函数中

                return "yellow"

            }else{

                return "red"

            }

        }()  //立即执行这个匿名函数

    }

}

三目运算符的简写是:js。三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符,一般来说三目运算符的结合性是右结合的。