zoukankan      html  css  js  c++  java
  • javascript——值传递!!

    基本概念:【瞄一眼就好~~】

    按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。

    按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。

    原始数据类型【Undefined、Null、Boolean、Number、String】&&对象类型 【Object,Array,Function,Date等】都是按照值传递的,只不过原始数据类型传递的值是原始值,即变量的值;对象类型传递的值是对象在堆内存中的内存地址

    例1:

        var a1 = 1;
        function foo(a) {
            a = 2;
        }
        foo(a1);
        alert(a1);//1,未改变

    例2:

        var obj = {
            x : 1
        };
        function foo(o) {
            o.x = 3;
        }
        foo(obj);
        alert(obj.x);//3,发生改变 

    例3:

        var obj = {
            x : 1
        };
        function foo(o) {
            o = 100;
        }
        foo(obj);
        alert(obj.x);//1,未改变 

    例4: 

        function setName(obj) {
            //为了便于区分,将下列三个obj分别设为obj1,obj2,obj3
            obj.name = "Nicholas";//obj1
            obj = 100;//obj2
            obj = new Object();//obj3
            obj.name = "Greg";
        }
        var person = new Object();
        setName(person);
        alert(person.name);//"Nicholas"

    ++什么是值传递?什么是引用传递?(review)

    ++可参考知乎文章:http://www.zhihu.com/question/27114726

  • 相关阅读:
    jenkins+newman+postman实现api自动化
    数据库的关闭方法
    获取2台linux机器的时间差
    性能测试与其分析
    todo:云数据库的元信息
    todo:trove命令使用
    syslog协议及rsyslog服务全解析
    C++Primer学习日记
    excel-填充
    excel-删除
  • 原文地址:https://www.cnblogs.com/feile/p/5329274.html
Copyright © 2011-2022 走看看