gpt4 book ai didi

javascript - 返回 Javascript 变量和性能

转载 作者:行者123 更新时间:2023-11-29 18:24:19 26 4
gpt4 key购买 nike

我目前将我脚本的所有必需元素缓存在一个类似于此的全局对象中:

var MainObject={
$El1 : $('#element1'),
$El2 : $('#element2')
};

在我的方法中,我可以直接访问对象。

method1:function(){
MainObject.$El1 // DO SOMETHING WITH THIS ELEMENT
}, ...

所以,我有 2 个问题。

我读到局部变量是最快的。这样写我的方法会更好吗?

method1:function(){
var $El1=MainObject.$El1;
$El1 // DO SOMETHING WITH THIS ELEMENT
}, ...

如果是的话……

如果我的脚本中有许多方法引用这些元素(可能很快变成很多行),什么是压缩它们的最佳方法?

method1:function(){
var $El1=MainObject.$El1,
$El2=MainObject.$El1,
$El3=MainObject.$El1,
$El4=MainObject.$El1;

$El1 // DO SOMETHING WITH THIS ELEMENT
},

method2:function(){
var $El1=MainObject.$El1,
$El2=MainObject.$El1,
$El3=MainObject.$El1,
$El4=MainObject.$El1;

$El1 // DO SOMETHING WITH THIS ELEMENT
},

method3:function(){
var $El1=MainObject.$El1,
$El2=MainObject.$El1,
$El3=MainObject.$El1,
$El4=MainObject.$El1;

$El1 // DO SOMETHING WITH THIS ELEMENT
},

谢谢!

最佳答案

在您测量到您确实在需要解决的特定方法中存在性能问题之前,添加用于过早优化的代码很少(如果有的话)是一个好主意。它只是增加了更多的代码行,需要更长的编写时间,而且通常不能解决任何实际问题。

然后,当您确实有性能问题需要解决时,您需要仔细衡量以找出该方法的哪个方面真正需要时间。


是的,局部变量比全局变量更快(先搜索局部作用域,然后再搜索全局作用域来解析变量名)。是的,MainObject.$EL1 中的多个引用比单个本地引用慢。


这是我的一般经验法则。如果您只是在一个方法中使用一次或两次类似 MainObject.$EL1 的东西,那么将它缓存在局部变量中几乎没有什么好处。如果您使用它三次或更多次,那么最好在本地缓存它以防止所有额外的查找。我通常会在 javascript 中执行与在 C++ 中相同的操作。

如果您遇到了实际的性能问题并且想要加快速度,那么您对性能问题的主要原因的第一直觉很少是正确的。因此,剖析并找出真正花费最多时间的事情是很有意义的。然后,当您进行更改时,您需要一种方法来衡量更改的影响,以了解当您添加更多代码时您实际上正在发挥作用。

关于javascript - 返回 Javascript 变量和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com