Javascript 和分组句子中的三元运算符

Ternary operator in Javascript and grouped sentences

我有以下三元运算符条件。有没有办法将第二个 if 语句以某种方式包含在第 1 行中,这样我就不需要再做一个 if 语句了?第一个条件,如果为真,则应准备显示状态更改以及复选框更改。

function change_properties(display){
    var display_r = ( display === 1) ? 'block' : 'none';

    /*THIS LINE - can it be integrated in the ternary if-else condition above? */
    if(display) jQuery("#checkbox").prop('checked',false);

    jQuery("#field").css("display", display_r); 
} 

哇,如果您愿意编写非常难读的代码那么是的,这在技术上是可行的:

var display_r = ( display === 1) ? jQuery("#checkbox").prop('checked',false), 'block' : 'none';

您可以使用 && 而不是 , 运算符...利用字符串 'block' 为真这一事实。

就此而言,为什么下一行代码单独一行?

jQuery("#field").css("display", ( display === 1) ? jQuery("#checkbox").prop('checked',false), 'block' : 'none');

总之,代码行不是敌人...

编辑: 修复了 , 周围的顺序,我不知道,因为我从不这样做。

不过没关系。让我们写一些有意义的东西,而不是为了好玩而使用三元运算符:

var display_r;
if (display === 1) {
    display_r = 'block';
    jQuery("#checkbox").prop('checked',false);
}
else {
    display_r = 'none';
}
jQuery("field").css("display", display_r);

IMO 如果你能像下面这样写出清晰易读的代码就更好了:

function change_properties(display){
    if(display){
         jQuery("#field").css("display","block");
         jQuery("#checkbox").prop('checked',false);
    }else
         jQuery("#field").css("display","none");

}

或者您可以使用 show()/hide() :

function change_properties(display){
    if(display){
         jQuery("#field").show();
         jQuery("#checkbox").prop('checked',false);
    }else
         jQuery("#field").hide();

}

希望对您有所帮助。

这样写,假设显示真实而不是===1

function change_properties(display){
   $("#checkbox").prop('checked',!display);
   $("#field").toggle(display);
}

或者如果您只想在显示为 1(真实)时取消选中:

function change_properties(display){
   if (display) $("#checkbox").prop('checked',false);
   $("#field").toggle(display);
}

Is there a way of the second if statement to be included somehow in line 1, so I don't need to make another if statement?

这是可能的,但这并不是一个好主意。

function change_properties(display){
    jQuery("#field").css("display", display === 1 && jQuery("#checkbox").prop('checked',false)
                                  ? 'block'
                                  : 'none'); 
}

明确地说,我真的认为你应该使用 中的第二个函数:

function change_properties(display){
   if (display) $("#checkbox").prop('checked',false);
   $("#field").toggle(display);
}