Jam*_*ice 36 javascript performance
我刚刚运行了一个非常简单的JavaScript 性能测试(不要问为什么).测试声明了一个变量,但没有为其赋值:
var x;
然后,它比较值变量比较的速度null,以及undefined,换句话说:
var y = (x == null);和var y = (x == undefined);.
我期待与之比较undefined是禁食.事实上,它远远不够.与之相比,null速度最快,速度提高了约80%.
我上面描述的结果来自于在Chrome中运行测试(版本13).在Firefox中运行它们会产生更接近我预期的结果(与之undefined比较的速度比使用它更快null,尽管非常小).
所以,我的问题是这可能是什么原因?为什么Chrome似乎更喜欢这种比较null?
为了快速参考,这里是结果的屏幕截图:

Lay*_*yke 18
null 是一个无法覆盖的保留关键字,因此当您对null进行比较时,您所要做的只是一次比较.
但是,当您进行检查时undefined,引擎必须进行类型查找然后进行比较,这意味着它实际上要求更高一些.
如果您需要实际检查以确定某些内容是否未定义,您应该使用
if(typeof notSet == "undefined"){ }
Run Code Online (Sandbox Code Playgroud)
试试吧......并null在JavaScript控制台中设置内容.
null = "will error";
// Errors with --> ReferenceError: invalid assignment left-hand side
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试使用undefined进行操作,则不会出错.这并不是说你可以覆盖undefined,因为你不能,但这undefined是它自己的原始类型.
null和undefined之间唯一真正的相似之处在于它们都可以被强制转换为布尔值false.
| 归档时间: |
|
| 查看次数: |
4824 次 |
| 最近记录: |