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

2025-03-09 10:17:38
推荐回答(2个)
回答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";
            }
        }();  //立即执行这个匿名函数
    }
}

回答2:

写法有误,if语句不能用在表达式中