打开chrome的console,写
var status = 1 > 0;
console.log(status ? 'yes' : 'no');
自己看下结果,是yes吧
再写
var status = 0 > 1;
console.log(status ? 'yes' : 'no');
神奇的事情发生了,还是yes,莫非 0 > 1?
这样逆天的是我今天也遇到了,但是在firefox里没事的,能得到正确结果。
究其原因,发现:
typeof status; // "true" or "false"
status 变量被变成字符串类型了,这就解释了为啥一直yes
但是又不懂了,明明定义了一个boolean变量,为啥给变成string了呢
搜索了一番发现status是window已经定义过的一个全局变量,而且是string类型的,webkit在处理你的全局变量覆盖预定义的变量时,没有按照想当然的做法,而是造了一个坑,这是一个神坑啊
当然你项目里不用全局变量是永远遇不到这事的,今天瞎折腾做test的时候偶然发现这个问题…
