局部变量vs参数

时间:2010-06-16 22:52:02

标签: javascript performance

function doIt(param) {
   var localVar = param;
   //do lots of stuff with localVar
}

function doIt(param) {
   //do lots of stuff with param
}

上述代码之间的效率方面是否存在差异?

3 个答案:

答案 0 :(得分:7)

没有区别。参数只是一个局部变量,在调用时使用传递的参数进行初始化。

但是,如果要更改变量的值,通常认为保持参数变量不变是一种好习惯,只是出于可读性和可维护性的原因。

答案 1 :(得分:0)

param变量已经是一个局部变量,因此这两个代码片段之间的唯一区别是第一个变量创建了param变量的无用副本。

答案 2 :(得分:0)

是的,如果您的参数变量包含对象的值,则有一个非常明显的区别。如果您的参数变量保存了对象的值,然后在传递的函数中的任何地方修改了参数变量对象,则其值将随处更改,因为在javascript中将对象作为参数传递时,它是通过引用而不是通过值传递的。

请查看以下代码段以了解我的意思

const object = {};
JSON.stringify(object) === "{}" will pass but {} === "{}" will not