我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
当前回答
我在Firefox使用Firebug测试了此类代码:
console.time(“testEquality”); var n = 0; while (true) { n++; if (n == 100000) break; } console.timeEnd(“testEquality”);
和
console.time(“testTypeEquality”); var n = 0; while (true) { n++; if (n === 100000) break; } console.timeEnd(“testTypeEquality”);
我的结果(每次测试5次,平均):
==: 115.2
===: 114.4
所以我会说小差异(这是超过100000 iterations,记住)是不可忽视的。 性能不是一个理由做 ===. 类型安全(好,安全,你会得到在JavaScript),和代码质量是。
其他回答
总是使用“===”并且你会避免成千上万的错误. 如今使用三重平等是由不同的风格指南更受欢迎,因为它比较考虑到类型的歌手。
我在Firefox使用Firebug测试了此类代码:
console.time(“testEquality”); var n = 0; while (true) { n++; if (n == 100000) break; } console.timeEnd(“testEquality”);
和
console.time(“testTypeEquality”); var n = 0; while (true) { n++; if (n === 100000) break; } console.timeEnd(“testTypeEquality”);
我的结果(每次测试5次,平均):
==: 115.2
===: 114.4
所以我会说小差异(这是超过100000 iterations,记住)是不可忽视的。 性能不是一个理由做 ===. 类型安全(好,安全,你会得到在JavaScript),和代码质量是。
是啊!重要。
=== 操作员在 javascript 中检查值以及类型,在那里作为 == 操作员只检查值(需要时进行类型转换)。
此分類上一篇
您可以轻松地测试它. 在 HTML 文件中插入跟踪代码并在浏览器中打开它
<script>
function onPageLoad()
{
var x = "5";
var y = 5;
alert(x === 5);
};
</script>
</head>
<body onload='onPageLoad();'>
现在修改 onPageLoad() 方法以警告(x == 5);你会得到真相。
因此,新 String(“Hello world”) ===“Hello world”返回虚假,但是, ==不关心如果对象是相同的,它只是将一个论点转换为另一个类型:如果转换是不可能的,返回虚假。
让我们添加这个建议:
如果有疑问,请阅读规格!
請讓我解釋如何閱讀規格來澄清這個問題. 我看到,在這個非常古老的主題中,沒有人對非常奇怪的效果有答案. 所以,如果你能閱讀一個規格,這將非常幫助你在你的職業。
搜索 PDF 文件为 === 引导我到规格的第 56 页: 11.9.4. The Strict Equals Operator ( === ),然后通过规格我发现:
我发现新的线条(“a”)是一个对象,并使用步骤1:返回错误,如果类型不同。
Aidiakapi在下面的评论中写道:
从规格 11.2.2 新操作员:如果类型(构建器)不是对象,扔一个 TypeError 例外. 换句话说,如果 String 不是对象类型,它不能与新操作员一起使用。
而这最终意味着:新线(“a”)!==“a”。