Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是";这";本地缓存?_Javascript_Performance_Caching_Scope - Fatal编程技术网

Javascript 是";这";本地缓存?

Javascript 是";这";本地缓存?,javascript,performance,caching,scope,Javascript,Performance,Caching,Scope,为了获得更好的性能,最好在本地缓存全局数据,如下所示: function showWindowSize() { var w = window; var width = w.innerWidth; var height = w.innerHeight; alert("width: " + width + " height: " + height); } 使用“this”关键字时是否也是如此,或者它是否已被缓存 例如: Game.prototype.runGameL

为了获得更好的性能,最好在本地缓存全局数据,如下所示:

function showWindowSize() {
    var w = window;
    var width = w.innerWidth;
    var height = w.innerHeight;
    alert("width: " + width + " height: " + height);
}
使用“this”关键字时是否也是如此,或者它是否已被缓存

例如:

Game.prototype.runGameLoop = function() {
  var self = this;
  self.update();
  self.draw();
};

符号
始终是本地引用,因此无需出于性能原因对其进行“缓存”。但是,可能还有其他原因在另一个局部变量中保留其值。当有一个本地函数需要从其包含函数访问
this
值时,包含函数必须复制该值,因为
this
总是在任何函数调用时设置的


(将
称为“本地引用”可能并不完全准确;关键是该关键字始终引用与本地函数激活记录相关的值。)

我认为该建议适用于经常使用全局引用的情况。意思是,使用
var h=window.innerHeight仅在循环内使用window.innerHeight时才有值。如果只使用一次,可能会丢失局部变量..您的建议似乎有误。您肯定不需要
窗口
的变量,那些
宽度
高度
变量只有在多次使用时才有用,例如在循环中。@Bergi我想我读的建议是正确的,尽管原始文本可能是错误的?From:“在局部变量中存储任何超出范围的变量,只要它被多次使用”。