如果我结合这2条语句:
x = 1+1;
y = (x<1)? x : 0;
成为一个陈述:
z = (1+1<1) ? 1+1 : 0;
是否对评估进行了缓存,以致不会影响性能?
提出了另一种方法,是否有一种方法可以使用一个变量来使用所计算的值(如果满足条件的话),或者如果不满足,则设置一个值?
答案 0 :(得分:1)
是否对评估进行了缓存,以致不会影响性能?
否,您已复制了代码,因此它将被评估两次。 JS通常不会执行任何common subexpression elimination。
有没有一种方法可以使用一个变量来使用计算出来的值(如果满足条件的话),或者如果不满足,则设置一个值?
否,除了使用函数外(内部可以多次引用其参数)。假设您在写<= 0
时的意思是< 1
,例如做
var y = Math.max(1+1, 0);