昔調べたが忘れた件

strtime関数を作成していたとき実装パターン1と2についてどちらがいいのだ?と思ったと吟味して結局実装パターン2を採用した覚えがあるけど根拠とか忘れてしまった(--;

実装パターン1

function strftime(s, t)
{
     var d = (t) ? new Date(t) : new Date();

     return s.replace(/%./g, function($1){
          switch($1)
          {
                case '%a':
                     return ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][d.getDay()];
                // 中略
                default:
                     return '';
          }
     });
};

実装パターン2

function strftime(s, t)
{
     var i, v, f, b = s.split('');
     var d = (t) ? new Date(t) : new Date();

     for(i=0,f=s.length;i<=f;i++)
     {
          if(b[i] == '%')
          {
               b[i++] = '';
               switch(b[i])
               {
                    case 'a':
                         b[i] = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][d.getDay()];
                         break;
                    // ::中略
                    default:
                         b[i] = '';
                         break;
               };
          };
     };

     return b.join('');
};

というわけで

というわけでどっちがいいか色々な視点で吟味して再度エントリーしよう。