2013-08-27 63 views
0

我試圖使用JS的Cookie插件讀取cookie的值,包括一個通知欄(你好吧)如果該值不是1JS的Cookie插件+的聲明如果不工作

這裏是我的代碼:

<!-- HelloBar code start --> 
<script type="text/javascript" src="//www.hellobar.com/hellobar.js"></script> 
<script type="text/javascript"> 
if($.cookie('returning_user') !== '1') { 
    new HelloBar(12345,12345); 
} 
</script> 
<!-- HelloBar code end --> 
  1. 是==來測試不平等這裏正確的操作!?
  2. 通過把1放在引號中,當我真的想要一個整數時,我測試了一個字符串嗎?

現在,代碼的內部部分(新HelloBar ...)從不執行。

+0

我剛纔只是說「是我寫的測試(!== '1')要測試這個cookie的值不等於1,或者它應該是!=或!===等等 –

+0

'1.'是'!=='和'==='是幾乎總是使用的正確操作符_JavaScript_。''2。您正在測試_String_,但這不一定是錯誤的 - Cookie是_Strings_。要調試這個,您需要檢查'$ .cookie('returning_user')'的值,例如使用'console .log' –

+0

@PaulS。Cookies是字符串,但是jQuery cookie插件可能使用JSON編碼在cookie中存儲非字符串。 – Barmar

回答

1

!==將同時檢查

,所以如果你想匹配整數

的類型和價值不是用

if($.cookie('returning_user') !== 1) {

===!==嚴格的比較操作:

JavaScript具有strict和 類型轉換等式比較。被 相比 對於嚴格平等對象必須具有相同的類型和:

  • 兩個字符串嚴格相等時,他們有的 字符,相同的長度,並在相應位置相同 字符相同的序列。
  • 兩個數字在數值上相等時(具有相同數字值的 )嚴格相等。 NaN不是 等於任何東西,包括NaN。 正和負的零等於 彼此。
  • 如果兩個布爾操作數都爲真或者兩個布爾操作數都爲假,則兩個布爾操作數嚴格相等。
  • 如果兩個對象引用同一個對象,則兩個對象嚴格相等。
  • 空和未定義的類型是==(但不是===)。 [即空==未定義(但不能爲null ===未定義)

Comparison Operators - MDC

0==false // true 
0===false // false, because they are of a different type 
1=="1"  // true, auto type coercion 
1==="1" // false, because they are of a different type