2010-06-06 53 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

相关问题