zoukankan      html  css  js  c++  java
  • 函数传值传参

    例子一
    var obj = {n:1};

    (function(x){
        console.log(x.n); // 1
        x.n=3;

        var obj = {n:2}; // 内部声明的变量不会影响外面的obj对象
        console.log(obj.n) // 2
    })(obj); // 传入的是一个指针(值), x是obj指针的副本, 两者都指向同一个对象

    console.log(obj.n); //3
    例子二
    var x = 1;
    function a(x{
        // 形参有自己的作用域, 独立于函数外的作用域, 因此不会影响外面的x; 在这里声明了var x = 1;
        console.log(x);  // 1
        x = 2;
        console.log(x); // 2
    }

    a(x);

    console.log(x); // 1
    例子三
    var obj = {n:1};
    function fn(x{
        // js传值; 对象传递的是指针(复制一份指针)
        console.log(x.n); // 1
        x.n = 2// 这里x与obj两个指针仍旧指向同一个对象

        x = {n:3}; // 这里x指向了另一个对象, obj仍指向原来的对象
        console.log(x.n); // 3
        console.log(obj.n); // 2
    }

    fn(obj);

    console.log(obj.n); // 2

    // 函数参数的声明相当与函数内部声明
  • 相关阅读:
    condition精准控制
    Juc(上)
    算法和空间复杂度分析
    ReentrantLock
    死锁
    互斥锁
    线程常用方法
    多线程售票与同步机制
    线程的7种状态
    selenium 自动刷司法课
  • 原文地址:https://www.cnblogs.com/rencoo/p/10197555.html
Copyright © 2011-2022 走看看