• 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

  • 相关阅读:
    CSS中expression使用简介
    过滤Html标签代码
    ASP.NET上传图片时显示预览
    30分钟搞定.net正则表达式
    DataFormatString格式化
    Js事件大全
    Hibernate关联映射
    动态给下拉框添加选项
    python模块整理文章导航
    python学习笔记文章导航
  • 原文地址:https://www.cnblogs.com/feile/p/5329274.html
Copyright © 2020-2023  润新知