Din*_*ler 2 javascript performance scope best-fit
以下两个代码示例(速度,最佳实践等)之间有区别吗?
这个:
function() {
    var me = this;
    me.doSomething();
    me.doAnotherThing();
};
或这个:
function() {
    this.doSomething();
    this.doAnotherThing();
}
如果我多次调用示波器,会有区别吗?我是使用变量还是只使用范围?
在JavaScript中,范围是继承的.因此,当您想要从父作用域访问变量时,引擎将首先查看当前作用域,查看它是否存在,然后将在父作用域中搜索.它将一直持续到找到你所要求的为止.
该this变量在本地范围内可用(实际上在激活对象中),引擎将能够立即解析它.因此,没有性能原因来缓存它.
但是,当您从父作用域访问变量时,这会变得很有趣.例如,假设您想document在函数中多次访问变量(来自全局范围).通过缓存它,引擎只需要解析一次,从而提高性能:
function foo() {
  var doc = document;
  doc.getElementsByTagName('body');
  doc.querySelectorAll('div');
}
无论如何,截至今天,这作为一种理论方法更有趣,因为大多数现代JS引擎都能够很好地优化它(http://jsperf.com/scope-resolution-cached-not-cached).
范围继承是JavaScript语言的重要组成部分,我强烈推荐这两个读数以便更好地理解:
| 归档时间: | 
 | 
| 查看次数: | 1166 次 | 
| 最近记录: |