2010-06-06 37 views
3

此代碼修整空白,(FYI:它記非常快)如何以正確加上括號這段代碼

function wSpaceTrim(s){ 
    var start = -1, 
    end = s.length; 
    while (s.charCodeAt(--end) < 33); //here 
    while (s.charCodeAt(++start) < 33); //here also 
    return s.slice(start, end + 1); 
} 

的while循環沒有括號,如何將我正確地加上括號到這個代碼?

while(iMean){ 
    // like this; 
} 

非常感謝!

回答

7

的循環體是空的(這種情況發生的實際事情是循環條件中的遞增/遞減操作),所以只需添加{}

while (s.charCodeAt(--end) < 33){} 
while (s.charCodeAt(++start) < 33){} 

較長,而且可能更容易閱讀的版本同樣while循環將是:

end = end - 1; 
while (s.charCodeAt(end) < 33) 
{ 
    end = end - 1; 
} 
start = start + 1; 
while (s.charCodeAt(start) < 33) 
{ 
    start = start + 1; 
} 
+0

如果他們空他們在做什麼嗎? – Mohammad 2010-06-06 16:59:24

+0

哦,他們正在改變變量'end'和'start'不是嗎? – Mohammad 2010-06-06 17:00:38

+1

也許你可以添加如下內容的評論:{/ *解釋你正在做什麼不會傷害* /} – Oblio 2010-06-06 17:01:25

2

的代碼不需要括號,但它確實需要使用本地修剪方法的選擇。

Opera,Firefox和Chrome都具有原生字符串原型修剪功能 其他瀏覽器也可以添加它。 對於這個特定的方法,我想我會用String.prototype, 猴子一點,以便在可能的情況下使用內置方法。

if(!String.prototype.trim){ 
    String.prototype.trim= function(){ 
     var start= -1, 
     end= this.length; 
     while(this.charCodeAt(--end)< 33); 
     while(this.charCodeAt(++start)< 33); 
     return this.slice(start, end + 1); 
    } 
} 

這可能確實是快,但我更喜歡簡單 -

if(!(''.trim)){ 
    String.prototype.trim= function(){ 
     return this.replace(/^\s+|\s+$/g,''); 
    } 
} 
+0

我認爲這實際上是相當快的,因爲替換函數在C或C++中實現(不管瀏覽器是用哪個編寫的)。它本質上有點慢,因爲它使用正則表達式,但被編譯成本地代碼可能不僅僅是彌補了這一點。 – intuited 2010-06-07 03:10:35