2016-09-06 18 views
1

我正在使用cookie,使用cookie的值設置其他代碼變量。jQuery cookie將字符串布爾值設置爲

我對cookie的默認狀態作爲這樣定義的數據:

const Cookie = { 
    config: { 
    name: 'Test_Cookie', 
    expire: 1, 
    value: true, 
    }, 
... 
} 

當標準被滿足時,該cookie被設置爲第一個時間,使用this.config.value設置cookie的值true

setCookie: function() { 
    if (!this.isCookieSet()) { 
     $.cookie(this.config.name, this.config.value, this.config.expire); 
    } 
    }, 

不過,我當我的代碼返回cookie的值算出我得到"true"回爲一個字符串,而不是僅僅true。例如(名稱上面的例子中改變爲簡單起見):

enter image description here

如果我嘗試做cookie的value比較,並使用=== true我得到一個錯誤的結果。如果我做=== "true"然後我得到一個真正的結果:

showStuff = $.cookie('Test_Cookie') === "true"; // showStuff = true; 

OR

showStuff = $.cookie('Test_Cookie') === true; // showStuff = false; 

爲什麼當設置cookie值變化的變量類型?

+2

Cookies是真的只是字符串。將一個布爾值保存爲一個cookie實際上會使其成爲一個字符串。您保存爲cookie的任何值都會發生同樣的情況。 – DelightedD0D

+0

僅供參考,'localstorage'也一樣。 – DelightedD0D

回答

1

餅乾是字符串。您需要將cookie值轉換爲您想要的類型。布爾值被保存爲true或false,因爲這是布爾值的字符串表示形式。

您可以使用以下內容。

var myBool = Boolean($.cookie('Test_Cookie'));

var myBool = ($.cookie('Test_Cookie') === "true");

編輯 正如@ DelightedD0D第一評論所說:

您也可以嘗試 - $.cookie('Test_Cookie') === "true"

+1

是的,但要小心,這可能會出乎意料,[請參閱此答案](http://stackoverflow.com/a/264037/1376624)。最好只是檢查'$ .cookie('Test_Cookie')===「true」' – DelightedD0D