Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个三元表达式中的两个_Javascript_Ternary Operator - Fatal编程技术网

Javascript 一个三元表达式中的两个

Javascript 一个三元表达式中的两个,javascript,ternary-operator,Javascript,Ternary Operator,我试图用一个表达式来表达这两个三元运算符。有人能帮我吗 var longer = a.length > b.length ? a: b; var shorter = a.length > b.length ? b : a; 谢谢 您可以在JavaScript 1.7(现在是1.8.5)中实现这一点: 正如每个人(可能)所想象的那样,这是一场灾难。但由于这是一个家庭作业问题,我将把它作为答案留在这里。如果您计划在表达式中声明这两个变量,这是不可能的。您可以将第一个表达

我试图用一个表达式来表达这两个三元运算符。有人能帮我吗

    var longer = a.length > b.length ? a: b;
    var shorter = a.length > b.length ? b : a;

谢谢

您可以在JavaScript 1.7(现在是1.8.5)中实现这一点:


正如每个人(可能)所想象的那样,这是一场灾难。但由于这是一个家庭作业问题,我将把它作为答案留在这里。

如果您计划在表达式中声明这两个变量,这是不可能的。

您可以将第一个表达式作为嵌套的赋值,作为第二个表达式的条件。

。。。。但在这种情况下,我认为应该保留这两行,以避免混淆代码。嵌套ternaries不会给您带来性能提升,因此没有任何用处。

使用这两个值的最清晰解决方案如下(可能需要调整语法):


我看到这个问题已经得到了回答。但是,我尝试它是为了好玩

shorter = ((a.length < b.length) && (longer = b))||((longer = a)&&false) ? a: b;
shorter=((a.length
更新:

正如@mattwipple所建议的,您可以将其缩短(您可以在控制台中看到警告)

((a.length
这是否意味着您希望从一个表达式中获得两个结果?这是不可能的。正如felix所说,如果你的目标是用相同的表达式设置两个变量,那是行不通的。如果这不是你的目标,你可以解释一下你想要什么,更清楚你想要什么。目标是在同一个表达式中设置变量的长度和长度。你可以使用逗号运算符(从而使其成为一个表达式),但这并不能真正改善任何事情。你仍然需要分别计算
longer
shorter
。换句话说,你不能这样做。事实上你可以这样做并不意味着你应该这样做。@KenWhite:当然你和Chuck在各方面都是对的。但既然他把这个问题作为家庭作业,我就把它留在这里。提出这个问题的人,如果他希望有这样一种解决方法的话,是最邪恶的。如果你不使用三元组,你可能会更清楚地绑定:
((a.length
我先做了类似的事情,但我在jsbin()“应为赋值或函数调用,而应为表达式”。
shorter = ((a.length < b.length) && (longer = b))||((longer = a)&&false) ? a: b;
((a.length < b.length) && (shorter = a) && (longer = b)) || ((shorter = b) && (longer = a))