我正在使用JSLint来完成JavaScript,并且在执行诸如比较语句内部之类的事情时,它会返回许多建议来替换==(两个等号)===(三个等号).idSele_UNVEHtype.value.length == 0if
有没有性能优势,以代替==用===?
任何性能改进都会受到欢迎,因为存在许多比较运算符
如果没有进行类型转换,是否会有性能提升==?
javascript equality operators equality-operator identity-operator
我最近2 == [2]在JavaScript中发现了.事实证明,这个怪癖有几个有趣的后果:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Run Code Online (Sandbox Code Playgroud)
同样,以下工作:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,这也有效:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Run Code Online (Sandbox Code Playgroud)
这些行为在所有浏览器中都是一致的
知道为什么这是一个语言功能吗?
以下是这个"功能"的更为疯狂的后果:
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a …Run Code Online (Sandbox Code Playgroud) {}[true]是[true]和![true]应该的false.
那么为什么 !{}[true]评价true呢?
if([] == false) alert('empty array is false');
alert(+[]) // alert 0
if([]) alert('empty array is true');
Run Code Online (Sandbox Code Playgroud)
他们都将运行警报