簡體   English   中英

Javascript:獲得零下限的最有效方法是什么?

[英]Javascript: what is the most efficient way to get a lower bound of zero?

獲得下限零的最有效(最快)方法是什么?

Math.max(0,x)將起作用,對於x的任何負值返回0。 但是,我對Math。*的經驗是,通常會有更多性能更高的技巧來更快地完成它。 在這種情況下有人知道嗎?

按位技巧很好; 我一直喜歡為那些運營商找到真正的用途。 如果x為負數,則任何返回false的東西也可以。

編輯要澄清,如果x大於0,我想要該值。 所以我不能只做x <0,因為那只會給我真,而不是x。

Math.Max(x, y)與例如x > y ? x : y基本相同x > y ? x : y x > y ? x : y x為負數時返回false應該同樣簡單: return x < 0 ? false : x return x < 0 ? false : x

一種滿足您要求的方法是:

x > 0 && x

假設您可以接受當x為0或負數時表達式為false情況。 如果在x為負數時只想返回false ,則可以執行以下操作:

x >= 0 && x

例子:

3 > 0 && 3;     // result: 3
-1 > 0 && -1;   // result: false
0 > 0 && 0;     // result: false

0 >= 0 && 0;    // result: 0

在最小/最大上查看“ Bit Twiddling Hacks”部分。

這是他們在C中的示例...

int x;  // we want to find the maximum of x and y
int y;   
int r;  // the result goes here 

r = x ^ ((x ^ y) & -(x < y)); 

適應JavaScript很簡單...

var x, y, r;

r = x ^ ((x ^ y) & -(x < y));

jsFiddle

但是,除非您處於緊密循環(例如游戲循環)並且由於Math.max()導致其性能不佳(並且簡單的三元內聯等效項無法提供所需的性能),否則我不會使用這個擺弄技巧。 對於任何閱讀代碼的人來說,這不是很明顯,它幾乎肯定需要注釋來解釋,而Math.max()是以其名稱(對大多數程序員)是自記錄的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM