zoukankan      html  css  js  c++  java
  • 函数的参数也是按引用传递的?

    老师,为什么《JavaScript高级程序设计》里说,函数的参数是按值传递的呢?书里的实例代码如下:

    function setName(obj) {
        obj.name = "Nicholas";
        obj = new Object();
        obj.name = "Greg";
    }
    var person = new Object();
    setName(person);
    alert(person.name);//=>"Nicholas" 


    • 把代码再改下,看的清楚一些

      function setName(obj) {

           obj.name = "Nicholas";

           obj = new Object();

           obj.name = "Greg";

           alert(obj.name);

           alert(person.name);

      }

      var person = new Object();

      setName(person);

      alert(person.name);//= >"Nicholas"

      在setname中,第一个obj是带入的person全局变量

      因为obj定义了其子属性,所以实际上修改的是person的值,如果不是子属性则该规则在此处无效

      然后又重新定义了一个obj=new  Object();这个定义是发生在函数里面的

      因此它的作用域就在函数内部,后面对obj.name赋值,则是对内部变量的赋值

      当setName方法结束后,obj的也被清理出内存,而全局变量person则保留

  • 相关阅读:
    cin、cout、cerr、clog------c++ Primer Plus
    c++ 用new后delete,而继续输出指针后果 new/new[]/delete/delete[]区别
    c++类
    c++内联 inline
    c++ 委托构造函数
    c++ explicit
    activti表结构
    工作流设计
    问题解决
    grep 命令
  • 原文地址:https://www.cnblogs.com/powerlx/p/4967368.html
Copyright © 2011-2022 走看看