我从后端获取一些大的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
答案 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;
您还可以通过将yy
和fx
的声明与分配相结合,在一行中书写。这是一个比三元运算符少的语句,所以如果你正在“优化”语句计数,为什么不这样做呢?