2016-07-26 82 views
1

我最近選擇了一些javascript代碼 - 因爲我不是js專家,一旦我運行了它,我喜歡將它細化,以便我可以更好地使用我的代碼理解。l'm使用javascript語句令人困惑

下面的代碼:

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

是交代不清的堆疊位,而如果聲明 - 如果我添加大括號,我得到這樣一個清晰的畫面:

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

但什麼我無法理解的是爲什麼一段時間的聲明被使用 - 當然,'如果'會更合適 - 或者我得到括號錯誤?

說明會很好。

+2

您正在使用while語句在開始處剪切所有空格。一個if語句只會被刪減一次!此外,如果身體只有一行,則可選可選coryry括號:) –

+3

您可循環刪除c開始處的每個空格。它是String c的左邊修剪。 – AxelH

+2

'.trim()'是你應該使用的。似乎你正在修剪字符串。 – Jai

回答

1

如果你有一個以幾個空格開始的文本,首先你會得到c.charAt(0) == " "爲真,然後第一個字符被刪除。然後,字符串開始處的字符將成爲您原來的第二個空格,所以它仍然是真實的,空格將被刪除。這將繼續下去,直到你一開始沒有任何空間。

+1

Jai是否正確,它應該是一個修飾語句? –

+1

是的,只要你不介意最後的空格被刪除 – rypskar

+1

我猜js中沒有修剪的開始 - 我沒有寫代碼,所以我可能會保留原樣。 –

1

我希望這個答案能讓你更清晰。

我張貼的答案,我不能夠評論作者:)

如果聲明: -

的if語句檢查一個表達式是真還是假,然後運行裏面的代碼聲明只有當它是真實的。而語句是循環

A - :在循環中的代碼只運行一次......

雖然聲明。基本上,它繼續執行while語句中的代碼,無論表達式是否爲真。

何時使用while循環:

While循環最好用於當你不知道到底有多少次,你可以通過一個條件必須循環 - 如果你知道你想要的是多少次測試一個條件(例如10),那麼你會使用for循環。