Javascript:函数中的参数归一化,应该复制吗?

李o

假设有一个函数:

const foo = (arg) => { do_something };

在运行之前do_something,我实际上要归一化为arg数组,因为该函数接受除数组之外的字符串或类型。

我知道在函数中直接修改传递的参数是一种不好的做法,因为它可能会变异并导致错误,这些错误很难调试。因此,我将执行以下操作:

const foo = (arg) => {
  const _arg = Array.isArray(arg) ? [...arg] : [arg];
  do_something(_arg)
};

如上,我实际上对该array(arg进行了浅表复制,并_arg在之后用于执行某些操作,并且我将确保不对其进行更改(因为它仅是浅表副本)。我的问题是,如果我不复制它该怎么办?即:

const foo = (arg) => {
  const _arg = Array.isArray(arg) ? arg : [arg];
  do_something(_arg)
};

会有所不同吗?还是哪种是更好/更健康的编码方式?它会影响垃圾收集或任何性能问题吗?

谢谢你的回答。

董阮

IMO,建议使用第一种方法,因为如果do_something引起某些副作用,第二种方法通常会导致意外问题

会影响垃圾收集吗?是。对于第一种方法,_arg将被清除,因为没有引用它。我不确定性能。这取决于您处理的数据大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章