好的,我不知道该怎么说。
这是我的代码:
var ratio, input={w:100,h:50};
if(input.w <= input.h) ratio = input.h / input.w;
else ratio = input.w / input.h;
问题:
是否有更快,更好,“需要更少代码”的方式来计算ratio
?比if / else语句。
谢谢!
答案 0 :(得分:10)
您可以使用三元条件运算符。语法:
condition ? (statement if true) : (statement if false);
在你的情况下:
ratio = (input.w <= input.h) ? (input.h/input.w) : (input.w/input.h);
编辑:
这并不比你的解决方案快,写入速度更快。我建议不要使用:
var ratio = Math.Max(input.w, input.h) / Math.Min(input.w, input.h)
这将比较数字两次(一次在Math.Max中,一次在Math.Min中)并且会慢一些。
答案 1 :(得分:7)
var ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)
另一个[可能更有效]:
var ratio = Math.max(input.w / input.h, 1 / input.w / input.h);
比三元更有效:
var ratio = w / h ;
ratio = ratio > 1 && ratio || 1/ratio
答案 2 :(得分:2)
小一点不一定更快:
var ratio, input = {w:100, h:50};
ratio = input.w <= input.h ? input.h / input.w : input.w / input.h;
答案 3 :(得分:2)
怎么样
ratio = Math.max(input.w, input.h) / Math.min(input.w, input.h)
答案 4 :(得分:1)
您可以使用三元运算符:
var ratio = (input.w <= input.h ? (input.h / input.w) : (input.w / input.h));