是否可以从 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 条件。 请帮我。
提前致谢
【问题讨论】:
技术上我们做不到。如果想要简洁,可以根据实际情况尝试另一种方式。 不,不是直接的。但老实说,你认为它可读(或简洁)吗? 不完全相关,但是比较两个字符串时可能会得到意想不到的结果,最好在比较之前将w
和h
转换为数字。
【参考方案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 中的三元运算符中的条件为真时才赋值