Javascript 将对象传递到同一范围内的函数慢吗?

Javascript 将对象传递到同一范围内的函数慢吗?,javascript,angularjs,Javascript,Angularjs,在同一范围内传递对象是否会造成明显的延迟?考虑下面的选项1和选项2。在第一个选项中,我只是直接处理对象。选项2是更好的封装实践,但假设我在相同的范围内进行封装——这是否会更慢(假设有数百个属性的巨大对象数组) 备选案文1: function addPropToObject(){ sampleObject.someNewProp = 'lalala' } 备选案文2: function addPropToObject(obj){ obj.someNewProp = 'lalala' } a

在同一范围内传递对象是否会造成明显的延迟?考虑下面的选项1和选项2。在第一个选项中,我只是直接处理对象。选项2是更好的封装实践,但假设我在相同的范围内进行封装——这是否会更慢(假设有数百个属性的巨大对象数组)

备选案文1:

function addPropToObject(){
 sampleObject.someNewProp = 'lalala'
}
备选案文2:

function addPropToObject(obj){
 obj.someNewProp = 'lalala'
}

addPropToObject(sampleObject);
AngularJs标记就在那里,以防在函数为:

$scope.adPropToObject = function(){....

虽然在我看来这根本不重要。如果您能想出更好的标题,请随意更改标题。

这取决于JS引擎的实现方式。选项1可能较慢,因为它必须向上移动一个(或多个)范围才能找到
sampleObject
。选项2可能较慢,因为它必须将
sampleObject
推到堆栈上,并在访问
obj
时将其拔出。您可以自己编写一个测试程序并测试响应时间。

这一切都取决于JS引擎的实现方式。选项1可能较慢,因为它必须向上移动一个(或多个)范围才能找到
sampleObject
。选项2可能较慢,因为它必须将
sampleObject
推到堆栈上,并在访问
obj
时将其拔出。您可以自己编写一个变量并测试响应时间。

这取决于实现,但如果变量已经在同一范围内可用,那么将其作为参数传递就没有多大用处了。我理解这一点(如问题中所述),这更像是一个假设性的问题。在现代运行时,在外部作用域中访问变量的运行时成本非常小,可能为零。这绝对不值得担心。谢谢你,知道这一点很好。这取决于实现,但如果变量已经在同一范围内可用,那么将其作为参数传递没有多大用处。我理解这一点(如问题中所述),这更像是一个假设性的问题。在现代运行时,在外部作用域中访问变量的运行时成本非常小,可能为零。这绝对不值得担心。感谢pointy,知道这一点很好。我真的没有任何特定的应用程序——我只是发现自己在编写所有内容时都使用了选项2“为了清晰”,并且假设我将把选项移到帮助器方法中,所以我想知道是否有一些规则始终适用。似乎没有,我很感谢你的回答。我并没有什么特别的应用程序,我只是发现我自己写的所有东西都使用选项2“为了清晰”,并且假设我将把选项移到助手方法中,所以我想知道是否有一些规则总是适用的。好像没有,谢谢你的回答。
$scope.adPropToObject = function(){....