2016-07-26 9 views
1

最近私はいくつかのjavascriptコードを拾いました - 私はjsの専門家ではないので、一度起動すれば、理解。ここで私はJavaScriptのwhile文を使って混乱しています

はコードです:

function checkCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(";"); 

    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 

     while (c.charAt(0) == " ") c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 

    return null; 
} 

混乱だビットを積み重ねながら、if文である - 私は中括弧を追加した場合、私はこのような鮮明な画像を得る:

 while (c.charAt(0) == " ") { 
      c = c.substring(1, c.length); 
     } 
     if (c.indexOf(nameEQ) == 0) { 
      return c.substring(nameEQ.length, c.length); 
     } 

しかし、どのような私は理解できないのは、なぜwhile文がまったく使われているのかということです - 確かに 'if'がもっと適切でしょうか?かっこが間違っていますか?

明確化は素晴らしいでしょう。

+2

whileステートメントを使用して、最初にすべての空白を切り捨てています。 if文は1回だけ削除されます。本体が単なる1行の場合は、括弧で囲まれた括弧はオプションです。 –

+3

cの先頭にあるすべてのスペースを削除するためにループします。ストリングcの左トリムです。 – AxelH

+2

'.trim()'はあなたが使うべきものです。あなたは文字列をトリミングしているようです。 – Jai

答えて

1

テキストが複数のスペースで始まる場合は、最初にc.charAt(0) == " "がtrueになり、最初の文字が削除されます。文字列の先頭にある文字は、元々持っていた2番目のスペースになります。したがって、それはまだ真であり、スペースは削除されます。これは、最初にスペースがなくなるまで続きます。

+1

それは本当にトリムステートメントでなければならないので、ジャイは正しいですか? –

+1

はい、末尾のスペースが削除されても構いません。 – rypskar

+1

私はjsにトリムスタートがないと思います。私はコードを書いていないので、おそらくそれをそのままにしておきます。 –

1

この回答がより明確になることを願います。

私はif文のコメント:)

を追加することはできませんよと、私は答えを投稿しています: -

アンステートメントかどうかをチェックする式が真または偽で、その後、内のコードを実行する場合それが真である場合に限り、ループ内のコードはwhile文

...一度実行される: -

Aの文がループしている間。基本的には、式が真である間はwhileステートメントでコードを実行し続けます。

whileループを使用するとき:

あなたが条件をループする必要があります正確にどのように何回か分からない時にループが最高使用されていますが - あなたがテストしたい正確にどのように何回も知っていれば条件(例えば10)を指定すると、代わりにforループを使用します。

関連する問題