2016-03-01 29 views
0

我剛剛開始學習JavaScript,而當我正在瀏覽cookie教程時,有一部分我根本聽不懂。你們能請詳細解釋一下嗎?提前致謝!你可以向我解釋一下Javascript cookie教程的這一行代碼嗎?

下面是整個腳本,但唯一讓我感到困惑的部分是readCookie(name)函數。第一行var nameEQ = name + "=";我不明白爲什麼我們必須在字符串的末尾加上一個等號。

function createCookie(name,value,days) { 
     if (days) { 
      var date = new Date(); 
      date.setTime(date.getTime()+(days*24*60*60*1000)); 
      var expires = "; expires="+date.toGMTString(); 
     } 
     else var expires = ""; 
     document.cookie = name+"="+value+expires+"; path=/"; 
    } 

function readCookie(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; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 
+0

因爲這就是您要搜索的內容。該cookie的名稱後跟一個等號。 – Bergi

回答

2

乍一看:

在這一行:if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

它正在尋找"name=",如果發現它從字符串中刪除。它追加=以確保它從字符串c中刪除整個部分。

例子:假設c = name=SomeCookieName,該行的代碼後,你將留下SomeCookieName

1

還有更多的細節here (MDN),但簡要地說......

至少,一個cookie是一個字符串,由cookie的名稱(等號前的部分)和cookie的值(等號後的部分)組成。所以,等號只是名稱和值之間的分隔符。這樣cookie可以作爲字符串存儲,但包含多個部分。

由於該功能正在搜索所有cookie,因此您需要名稱加上等號才能找到正確的值。如果沒有等號,您可能會得到錯誤的cookie,其名稱中包含您要查找的值。

相關問題