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

时间:2014-05-29 11:33:09

标签: javascript jquery

这里我有以下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.  

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

提前致谢

2 个答案:

答案 0 :(得分:3)

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

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;
}

答案 1 :(得分:1)

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

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