如何以更优化的方式编写嵌套三元运算符

时间:2014-03-07 14:45:12

标签: javascript optimization ternary-operator

我从后端获取一些大的json数据,并且我必须检查两次数据,然后才能使用该数据。在嵌套if中,我的代码工作正常,我希望将其更改为嵌套ternary条件。以下是我的代码(Fiddle

JS:

var x = /* Some big JSON data */,fx,yy;
if(x){
    yy = $.parseJSON(decodeURIComponent(x));
    yy ? fx = yy.products.length : fx =0;
}else{
    fx = yy = 0;
}

这是我尝试过的(不工作):

x ? ($.parseJSON(decodeURIComponent(x)),(yy ? fx = yy.products.length : fx =0;)) : (fx = yy = 0);

这是Fiddle

1 个答案:

答案 0 :(得分:2)

坦率地说,将其写为

会好得多
var x = /* whatever */, fx = 0, yy = 0;

if (x && yy = $.parseJSON(decodeURIComponent(x))) {
    fx = yy.products.length;
}

这对读者来说很清楚。

使用惯用的Javascript(仍然没有三元运算符)编写它的另一种方法是

var x = /* whatever */, yy, fx;
yy = $.parseJSON(decodeURIComponent(x)) || 0;
fx = (yy && yy.products.length) || 0;

您还可以通过将yyfx的声明与分配相结合,在一行中书写。这是一个比三元运算符少的语句,所以如果你正在“优化”语句计数,为什么不这样做呢?