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);
}
我有以下三元运算符条件。有没有办法将第二个 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); }