2011-12-04 41 views
0

我不确定它是否可能,但有没有更简洁(或更快的方法)来执行以下操作?更简单的方法来检查值并分配在TRUE上

if(w > width) width = w; 

我的工作,做类似的逻辑每秒数千次一个项目,但它往往更复杂,所以我想1),使其速度更快,如果可能和2)找到为了我自己的理智,写一个更简短的方法。

**编辑**

的东西多一点的时间为例

if(Math.abs(x) > this._boundingBox.width) this._boundingBox.width = Math.abs(x); 

回答

2

这将至少缩短键入:

width = Math.max(w, width) 
+0

使用Math.max是每个jsperf处理最慢的:http://jsperf.com/is-gt尽管我会坚持if/else,但我最喜欢你的创新。 – Jacksonkr

0

您可以使用三元运算:

width = (w > width ? w : width); 

然而,这可能是因为它效率会低一点当条件为假时将分配width = width

虽然,我仍然建议你坚持原始代码。没有理由混淆你的逻辑。

+0

这有不同的结果。我想你的意思是'宽=宽>宽? w:width;'。然而,这种解决方案并不比OP的当前状态短。 –

+1

@罗勃瓦 - 对不起,那是一个错字。你说的没错,不是很短*,但是我不能计算我看过这样一个问题的次数,其中接受的答案不是*实际上比所问的问题短,仅仅因为它们碰巧更喜欢替代语法。 – Polynomial

0

我不知道这是多快,但它似乎更简洁。

(w > width) ? width = w : w = w ; 
/* The w = w does nothing though a statement is needed */ 

我还假设你使用c或C++,因为你需要速度。

0

试试这个(未测试):

w>width&&width=w; 

和其他捷径,这里有一个快速参考: http://geogeeks.net/2011/01/javascript-shorthands/

+0

**错误**:'无效的赋值左边'。您必须在表达式的最后部分添加括号。令人惊讶的是,代码没有缩短...... –

相关问题