我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
当前回答
问题在于,你可能很容易陷入麻烦,因为JavaScript有很多暗示的转换,这意味着...
var x = 0;
var isTrue = x == null;
var isFalse = x === null;
最好的样本为什么暗示转换是“邪恶”可以从这个代码在MFC / C++,这实际上会由一个暗示转换从CString到HANDLE,这是一个指标类型。
CString x;
delete x;
显然,在工作时间内,它会做一些非常不确定的事情......
谷歌对C++和STL的暗示转换,以获得一些反对它的论点。
其他回答
在您的使用中,不可能有两项操作之间的性能差异. 没有类型转换要进行,因为两项参数已经是相同的类型. 两项操作将有一个类型比较,其次是值比较。
这里是一个方便的比较表,显示发生的转换和 ==和 ===之间的差异。
如结论所说:
“使用三种平等,除非你完全理解两种平等发生的转变。
http://dorey.github.io/JavaScript - 平等 - 表/
“我要在JavaScript比较中使用 ==或 ===”的辩论是相同或类似于一个问题:“我要用一个“<unk>”或一个“<unk>”吃。
这个问题的唯一合理答案是:
您应该使用动态类型比较,例如:==为空白类型比较,您应该使用静态类型比较,例如:===为强大的类型比较。
这是因为他们不是相同的,他们没有相同的目的,并且不应该用于相同的目的。
當然,兩個「<unk>」和「<unk>」都是用於「吃」的,但你會選擇根據你所服用的食物使用它們。
在典型的脚本中不会有性能差异 更重要的是,一千个“==="比一千个“=="=====================================================
这个建议不是因为性能问题,而是因为类型强迫意味着(‘\t\r\n' == 0)是真实的。
* 主持人 === vs == *
1 == true => true
true == true => true
1 === true => false
true === true => true