在函数末尾将JS中的传入数组设置为null是否有好处?

问题描述 投票:0回答:1

最近,我在工作中遇到了一些代码,这让我很困惑最初的编码人员的想法。代码的要旨是:

function func1(array1) {
   var returnVal = false;

   try
   {
      // Do something. (No effect on array1)
   }

   catch (e)
   {
      CallDebugger(e.description);
   }

   finally 
   {
      // Clean up the memory?
      array1 = null;
   }

   return returnVal;
}

function func2() {
   var arr = [1,2,3]
   var ret = func1(arr)
}

我的问题是:在func1的末尾将array1设置为null到底有什么作用?是否在func2中将arr更改为null?还是将array1更改为null会创建对null变量的新引用?还有别的吗?

就内存泄漏而言,这有潜在的好处吗?

javascript arrays memory memory-management pass-by-reference
1个回答
0
投票

在这种情况下,执行array1 = null似乎很不合理。

在func1的末尾将array1设置为null到底有什么用?是否会将func2中的arr更改为null?

[基本上,array1是对arr中对func2的引用的副本。因此,该赋值将仅在func1范围内更改变量,而在其他任何地方都不会更改,因此arr中的func2保持不变。而且在函数末尾的finally语句中这样做是没有用的,因为func1紧接在finnaly语句之后,并且对array1的引用将被垃圾回收,而且没人会知道它被设置为null (期待它是否最终在关闭之前,但您说不是)。

或者将array1更改为null会创建对null变量的新引用吗?

[它只是将array1的值设置为null,并且正如我之前所说的:在这种情况下,arr中的func2将不会更改。

:)

© www.soinside.com 2019 - 2024. All rights reserved.