是否可以从 javascript 中的条件(三元)运算符中获取这两个值?

Posted

技术标签:

【中文标题】是否可以从 javascript 中的条件(三元)运算符中获取这两个值?【英文标题】:Is it possible to get the two values from conditional(ternary) operator in javascript? 【发布时间】:2014-07-18 21:36:18 【问题描述】:

这里我有以下 javascript 代码,带有两个值。

var w = $("#id1").val();
var h = $("#id2").val();  
(w == h) ? (w=350 , h=350):((w<h)?(w=300 , h=350):(w=350 , h=300)); 

在这里我想检查三个条件。

1) If w == h then we need to assign some values.  
2)else if w < h then we need to assign some other values.    
3)else if w > h then we need to assign some other values.  

上面的代码显示没有给出 w 和显示 javascript 错误的值,如何使用三元运算符获取这些值,而不使用 if 和 else 条件。 请帮我。

提前致谢

【问题讨论】:

技术上我们做不到。如果想要简洁,可以根据实际情况尝试另一种方式。 不,不是直接的。但老实说,你认为它可读(或简洁)吗? 不完全相关,但是比较两个字符串时可能会得到意想不到的结果,最好在比较之前将wh转换为数字。 【参考方案1】:

是的,您可以从条件运算符返回一个数组(或者一个对象),并从数组中赋值:

var values = w == h ? [350, 350] : w < h ? [300, 350] : [350, 300];
w = values[0];
h = values[1];

您的原始代码实际上应该可以工作,当我测试它时它确实可以工作。但是,您正在滥用条件运算符。如果你想直接做赋值而不返回值,你不应该使用条件运算符,而只是一个if语句:

if (w == h) 
  w = 350; h = 350;
 else if (w < h) 
  w = 300; h = 350;
 else 
  w = 350; h = 300;

【讨论】:

【参考方案2】:

另一种解决方案(更长)是使用闭包并立即执行函数:

w == h ? function()w = 350; h = 350() : 
w < h ? function()w = 300; h = 350() : 
        function()w = 350; h = 300();

【讨论】:

以上是关于是否可以从 javascript 中的条件(三元)运算符中获取这两个值?的主要内容,如果未能解决你的问题,请参考以下文章

仅当 JavaScript 中的三元运算符中的条件为真时才赋值

javascript中的嵌套条件三元运算符[关闭]

javascript React - 三元运算符或jsx中的条件包含带反应的html

三元运算符——Javascript基础教程mark

JavaScript一元运算符二元运算符和三元运算符

是否可以将三元运算符放在开关内? Javascript