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