Как правильно добавить скобки в этот код - PullRequest
3 голосов
/ 06 июня 2010

Этот код обрезает пробелы (к вашему сведению, это очень быстро)

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;
}

Большое спасибо!

Ответы [ 2 ]

7 голосов
/ 06 июня 2010

Тела цикла пусты (на самом деле происходит операция увеличения / уменьшения в условии цикла), поэтому просто добавьте {}:

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;
}
2 голосов
/ 07 июня 2010

Коду не нужны скобки, но ему нужна опция для использования собственного метода усечения.

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,'');
    }
}
...