代码之家  ›  专栏  ›  技术社区  ›  DLS

局部变量与参数

  •  6
  • DLS  · 技术社区  · 14 年前
    function doIt(param) {
       var localVar = param;
       //do lots of stuff with localVar
    }
    
    function doIt(param) {
       //do lots of stuff with param
    }
    

    上面的代码在效率方面有什么不同吗?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Daniel Vassallo    14 年前

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

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

        2
  •  0
  •   Crozin    14 年前

    param 变量已经是局部变量,所以这两个代码段之间的唯一区别是第一个代码段创建了 参数 变量。

        3
  •  0
  •   Point Networks    6 年前

    是的,如果您的参数变量包含对象的值,则有一个非常显著的区别。如果您的参数变量持有一个对象的值,然后您在传递函数中的任意位置修改您的参数变量对象,那么它的值在任何地方都会更改,因为在javascript中将对象作为参数传递时,它是通过引用传递的,而不是通过值传递的。

    请看下面的代码片段来理解我的意思

    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' }