javascript - 分析 `if(x)` VS `if(x===undefined)`

标签 javascript profiling

<script>
    function f(){
        var t=document.getElementById("t");
        var g=t.asdfg;
        var a=new Date().getTime();
        for(var x=0;x<100000000;++x){
            if(g===undefined);
            //if(g);
        }
        var b=new Date().getTime();
        alert(b-a);
    }
</script>
<body onload="f();">
    <input id="t"/>
</body>

在 Firefox 中 if(g)if(g===undefined) 慢。我想知道有没有人知道为什么会这样?

在 Chrome 中 if(g)if(g===undefined) 更快。我想知道有没有人知道为什么会这样?

我不是在争论我们应该使用一个而不是另一个。我只是对理论

感兴趣

可以说不同的浏览器有不同的实现,但任何浏览器上的理论都值得回答

最佳答案

javascript 中没有关键字undefined,它不像null 那样工作。

当你使用

if(g===undefined)

undefined 将被解析为标识符。因此,解释器必须检查全局(窗口)范围内是否存在 undefined 变量。此查找需要一些时间。

恕我直言,检查未定义的更正确方法是(虽然不一定更快)

if(typeof(g) === 'undefined')

另一方面,表达式 if(g) 最有可能实现为 bool 值的隐式转换,这当然也需要一些时间。

所以我猜测这两种不同的操作在 Firefox 和 Chrome 引擎中的速度并不相同。

关于javascript - 分析 `if(x)` VS `if(x===undefined)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6383520/

相关文章:

javascript - v8 Javascript 引擎如何对 Int32Array 值执行位运算

javascript - 使用外部应用程序调用 Outlook

javascript - 数组方法导致JS完全不起作用。如何将值保存到二维数组中并显示它?

javascript - 如何根据django admin中的另一个选择字段限制选择字段选项

Python 分析方法

java - 在 Eclipse 中分析 Java 应用程序的最佳方法是什么?

c - nvprof 没有获取任何 API 调用或内核

profiling - 源代码功率分析

java - vaadin javascript

python - 如何分析 Python 脚本?