Javascript 局部变量与参数
上述代码在效率方面有什么不同吗Javascript 局部变量与参数,javascript,performance,Javascript,Performance,上述代码在效率方面有什么不同吗 param变量已经是一个局部变量,因此这两个代码段之间的唯一区别是第一个代码段创建了param变量的无用副本。没有区别。参数只是一个局部变量,在调用时用传递的参数初始化 但是,如果要更改变量的值,通常认为保持参数变量不变是一种良好的做法,这仅仅是出于可读性和可维护性的原因。是的,如果参数变量保留对象的值,则存在一个非常显著的差异。如果您的参数变量持有一个对象的值,然后您在传递函数中的任何位置修改参数变量对象,那么它的值将在任何地方都会更改,因为在javascrip
param
变量已经是一个局部变量,因此这两个代码段之间的唯一区别是第一个代码段创建了param
变量的无用副本。没有区别。参数只是一个局部变量,在调用时用传递的参数初始化
但是,如果要更改变量的值,通常认为保持参数变量不变是一种良好的做法,这仅仅是出于可读性和可维护性的原因。是的,如果参数变量保留对象的值,则存在一个非常显著的差异。如果您的参数变量持有一个对象的值,然后您在传递函数中的任何位置修改参数变量对象,那么它的值将在任何地方都会更改,因为在javascript中将对象作为参数传递时,它是通过引用传递的,而不是通过值传递的 请看下面的代码片段来理解我的意思
function doIt(param) {
var localVar = param;
//do lots of stuff with localVar
}
function doIt(param) {
//do lots of stuff with param
}
甚至没有。任何好的编译器都应该去掉中间死变量(比如param)。如果你发现了一个不同点(我在Firefox和Opera上得到了有趣的结果),不管怎样,它都可以忽略不计。
function someTask (paramter) {
//some long task
paramter.color = 'Red';
//some other task
}
function main() {
let fruit = {
name: 'Mango',
color: 'Yellow'
}
someTask(fruit)
console.log(fruit)
}
main()
//Outputs: { name: 'Mango', color: 'Red' }