JaveScript 嘗試着儘量獨立於數據類型。通常狀況下,JavaScript會自動作類型轉換,使得一個表達式能夠被正常運行而不是 fail。可是,這和JS新手預期的仍是挺不同的。好比說,1+「1」 並不會被當作 2,而是 string 「11」。1==「1」 也不會被計算成 true。不少簡單的檢測是否相等的式子很容易出錯。spa
謎題:圖片
if(a==b)alert("a equals b");
if(a==0)alert("a is zero");
if(b==0)alert("b is zero");ip
上面這段代碼一開始運行得挺好,後來出現了一個小 bug。
第一個式子並無顯示 "a equals b"。
第二個式子顯示了 "a is zero".
第三個式子顯示了 "b is zero"
既然 a 和 b 是不相等的,爲何 a 是 0,b 也是 0 呢?到底發生了什麼? a 和 b 是什麼樣的值纔會致使這樣的結果?答案明天揭曉string