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

JavaScript013

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语句啊

{

name:“”,

age:12,

getName:function(){

if(this.name==""){

//......

}

this.name==""? a : b

}

}

当然我这个例子不太恰当,以你的场景定吧