Nam*_*ame 5 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>
Run Code Online (Sandbox Code Playgroud)
在Firefox if(g)
中慢于if(g===undefined)
.我想知道有没有人知道为什么会这样呢?
Chrome if(g)
中的速度比if(g===undefined)
.我想知道有没有人知道为什么会这样呢?
我不是在争论我们应该使用一个而不是另一个......我只是对这个理论感兴趣
可以说不同的浏览器有不同的实现,但任何浏览器上的任何理论都值得回答
undefined
在javascript中没有关键字,它不像那样工作null
.
当你使用
if(g===undefined)
Run Code Online (Sandbox Code Playgroud)
undefined
将被解析为标识符.因此,解释器必须检查undefined
全局(窗口)范围中变量的存在性.这种查找需要一些时间.
恕我直言,检查不确定性的更正确的方法是(虽然不一定更快)
if(typeof(g) === 'undefined')
Run Code Online (Sandbox Code Playgroud)
另一方面,表达式if(g)
很可能实现为对布尔值的隐式强制转换,这当然也需要一些时间.
所以我的猜测是这两种不同的操作在Firefox和Chrome引擎中并不是同样快.
归档时间: |
|
查看次数: |
333 次 |
最近记录: |