标签:style blog http color io java ar for div
最近在看JavaScript框架设计,在讲解类型判定的时候提到了一些“匪夷所思的情况”,不过没有明说都是什么时候会出现这些情况。自己玩儿了一下,写写随笔吧。不过可能除了我找到的,还有会其他时候会出现这些诡异的现象2333
a !== a
a == b && b != a
a == !a
a == b && a == c && b != c
a != b && a != c && b == c
参考ECMA-262 Edition 5.1 Section 11.9.6,其实!=也是true(参考11.9.3)
var a = NaN; console.log(a !== a); // true
只有IE6~8会出现(由于window不属于ECMAScript约束范围)
var a = window; var b = document; console.log(a == b && b != a); // true
参考ECMA-262 Edition 5.1 Section 11.9.3,这里也有讲解
var a = []; console.log(a == !a); // true
var a = 0; var b = ‘‘; var c = ‘0‘; console.log(a == b && a == c && b != c); // true
var a = false; var b = undefined; var c = null; console.log(a != b && a != c && b == c); // true
JavaScript里的黑魔法真是太可怕了,啊哈哈哈哈哈……虽然都是略钻牛角尖的东西,不过实际开发中可能真的会被其中的情况坑到。所以说,在绝大多数情况下,还是能用===就用===的好……
JavaScript: The Evil Parts - 1
标签:style blog http color io java ar for div
原文地址:http://www.cnblogs.com/joyeecheung/p/3980445.html