• 论JS函数传参时:值传递与引用传递的区别


    JS中数据类型分为两种:基本数据类型(undefined,null,Number,object,String,Boolean)和复杂数据类型(对象)

          而两种数据类型的参数传递方式也不同:分别采用值传递 和 引用传递

                     1.  值传递:不区分地址和值,直接通过地址就可以找到内容

                                    如:   var a = 10;

                                           var b = a;

                                              b = 20;
                                       console.log(a);   // 10
                                        console.log(b);  // 20

                              将变量a的值赋给了b,那么当b的值发生了改变时,a变量的值不会随着b发生改变,这就叫值传递

                   2.   引用传递的数据:区分地址和值,需要通过所在的地址找到对应的内容

                                  如:  var arr1 = [1,2,3];
                                           var arr2 = arr1;

                                          arr2[1]="hhhh";

                                          console.log(arr2);   // [1,"hhhh",3] 

                            首先,定义了一个数组arr1,将arr1的地址赋值给arr2时,仅仅是将arr1的地址赋值给了arr2,也就是说当arr1的数据发生改变时,数组arr2地址指向的数组arr1中 的数据发生了改变,arr2中保存的地址的内容发生了改变,这种叫引用传递。

     总结:值传递的数据,地址和值是一个内容,所以在拷贝之后,改变新的,不会影响老的。 引用传递是说,地址和值是两个部分,在默认的情况下,只复制了地址,并没有复制值,此时,两个地址指向了同一个值,修改了新的值,并且影响了之前的值。这个叫引用数据的浅拷贝。

  • 相关阅读:
    Load Balancing 折半枚举大法好啊
    Big String 块状数组(或者说平方分割)
    K-th Number 线段树(归并树)+二分查找
    D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
    CSU OJ PID=1514: Packs 超大背包问题,折半枚举+二分查找。
    运行时Runtime的API
    UIView的API
    UIControl的API
    UIScrollView的API
    使用KVO键值监听
  • 原文地址:https://www.cnblogs.com/daydayup-98282/p/12344082.html
Copyright © 2020-2023  润新知