【发布时间】:2014-03-07 14:45:11
【问题描述】:
我正在从后端获取一些大的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
【问题讨论】:
-
你正试图用一些你理解的东西来代替你理解的东西,因为它是如此复杂以至于你无法很好地理解它来编写它。请问,您为什么认为这是个好主意?
-
遇到困难和复杂的情况,最好使用
if else而不是ternary -
为什么你认为把所有东西放在一条线上就意味着它是“优化的”?
-
@Jon 我认为将它写在一行中会更容易,第二件事是我相信三元比 if 和 else 执行得更快
-
@BharatSoni:三元运算符绝对不会比 if-else 快。如果编译正确,两者都应该给出相同的字节码。不要为了过早的微优化而牺牲可读性,尤其是对于无用的微优化。
标签: javascript optimization ternary-operator