Javascript 检查两个数字是否相等的最佳方法

Javascript 检查两个数字是否相等的最佳方法,javascript,performance,if-statement,Javascript,Performance,If Statement,我希望知道检查两个数是否相等的最佳方法 我生成了一个简单的示例,检查两个数字是否相等1000万次 这是javascript,我用ms注释结果。我使用chrome <html> <head> <script> function goOn(arr) { var resul = 0; var a = 50; var b = 50; var fechai = new Date(); for(i=0;i<10000000

我希望知道检查两个数是否相等的最佳方法

我生成了一个简单的示例,检查两个数字是否相等1000万次

这是javascript,我用ms注释结果。我使用chrome

<html>
<head>
<script>

function goOn(arr) 
{
    var resul = 0;
    var a = 50;
    var b = 50;
    var fechai = new Date();
    for(i=0;i<10000000;i++)
    {
        //if(a ^ b === false)        // 1359
        //if((a & b) === a)         // 160
        //if(a === b)               // 148
        //if(!(a - b))              // 172
        if((a & ~b) === 0)           // 175
        {
            resul++;
        }
    }
    var fechaf = new Date();
    alert(fechaf - fechai);
}
</script>
</head>

<body>
<input type="button" value="View message" onclick="goOn()">
</body>

</html>

功能goOn(arr)
{
var结果=0;
var a=50;
var b=50;
var fechai=新日期();

对于(i=0;i检查相等性的最佳方法是相等运算符(
=
===
),使用这些方法中的任何其他方法只会导致代码大量混淆所有人,而不会产生任何明显的性能影响。(如果是这样,这就是JavaScript,任何一种方式的影响都将完全依赖于平台/浏览器。)


换句话说,不要做你想做的事。

为什么不只是如果(a===b{…?+1代表
(a==b)
=>或者,如果你不想成为“所有这些”,Object.is()做的和===”一样,但也声称NaN==NaN…@dandavis他为什么要
Object.is
检查两个数字是否相等--?为什么
(a^b==false)
?这必须将一个数字转换为布尔值。
!(a^b)
更快。(但仍然不如简单地使用
=
==
,在某些情况下失败)true,但如果希望100%正确,请不要忘记也与NaN进行比较。我能想到的包括NaN支持的最佳方法是:var equal=(a==b | |(a!==a)和&(b!==b));