美文网首页
js--函数传值

js--函数传值

作者: 栗子酥小小 | 来源:发表于2017-03-19 22:26 被阅读0次
  • 摘自JS高级程序-第三版
JS中所有的函数的参数都是按值传递的!!!
  • 虽然访问变量有按值和按引用传递两种,但是函数参数的传递只能按值传递。具体的方法是:

  • 如果是基本类型的值,就将值复制给函数参数,其实也就是arguments对象中的一个元素。

  • 如果是引用类型的值,就将这个值在内存中的地址复制给函数参数。

  • 在函数内部,函数参数实际上是一个局部变量。

  • 如果函数参数保持传入的引用地址不变,则在函数内部改变函数参数所指向的对象的值,在函数外访问时该对象也会随之改变。如果函数参数中途被改变过,则会指向新的对象,丢失原来的地址引用,此时改变函数参数所指对象的值,不会对函数外的对象造成改变。

  • 代码对比如下:
    function setName(obj) {
    obj.name = "Nicholas";
    }
    var person = new Object();
    setName(person);
    alert(person.name); //"Nicholas"

  • function setName(obj) {
          obj.name = "Nicholas";
          obj = new Object();
          obj.name = "Greg";
      }
      
      var person = new Object();
      setName(person);
      alert(person.name);    //"Greg"
    
  • 解析:上述中,在函数内部修改了形参的值,形参指向了一个新创建的对象,但原始的引用仍未改变。obj与person所引用的已经不再是同一个对象,所以两者的修改互不影响。而且obj指向的对象是一个局部对象,会在函数执行完毕后立即被销毁。

相关文章

  • js--函数传值

    摘自JS高级程序-第三版 JS中所有的函数的参数都是按值传递的!!! 虽然访问变量有按值和按引用传递两种,但是函数...

  • C++函数

    函数参数有默认值,调用的时候可以传值,可以不传值 可变参数,循环读取 构造函数,析构函数,拷贝构造函数 构造函数 ...

  • PHP开发经验总结

    请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用? 按值传递:函数范围内对值的任何改变在函数外部都...

  • JavaScript学习 之 传值or传引用

    目录 引言 传值? 传引用? 基础类型传值-对象类型传引用? 传共享! 小结 引言 JavaScript的函数参数...

  • 构造函数注意事项及构造函数创建对象存在问题

    01 构造函数内部设置方法(函数传值)函数传值:可以把构造函数的对象方法抽取为参数 02 对象类型 检查对象的类型...

  • Python 函数中,参数是传值,还是传引用?

    Python 函数中,参数是传值,还是传引用? 代码示例 在 C/C++ 中,传值和传引用是函数参数传递的两种方式...

  • 函数的参数是按值传递

    先看个传参为原始值的例子 下面讨论传参是引用值的例子 当调用函数,函数内部给obj设置了name值,函数外部也反映...

  • 面向对象02-构造函数注意事项

    构造函数注意事项 01 函数传值 函数传值:可以将对象的方法作为参数传递 代码示例 02 类型判断 类型判断:判断...

  • 函数传值

    函数的参数是对象(列表、字典、类的对象),传参的时候传递的是地址,如果要对对象的内容进行修改,传参的时候传对象的拷...

  • python

    python传值Python 函数参数引用(传值/传址)/copy/deepcopy - ZH奶酪 - 博客园 p...

网友评论

      本文标题:js--函数传值

      本文链接:https://www.haomeiwen.com/subject/scvvnttx.html