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

  • 相关阅读:
    [C#]生成缩略图
    [C#]原来DataTable的Distinct竟如此简单!
    [C#] UTF8 ENCODING=QUOTEDPRINTABLE 的解码和编码
    ASP.NET将文件写到另一服务器
    生成machineKey密钥
    Docx转Doc操作(c#)
    Linq学习知识摘记
    HTTP 状态代码
    文件与流相关code
    Web文件的ContentType类型大全
  • 原文地址:https://www.cnblogs.com/feile/p/5329274.html
Copyright © 2011-2022 走看看