这段代码修剪了空白,(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;
}
非常感谢你!
答案 0 :(得分: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;
}
答案 1 :(得分: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,'');
}
}