美文网首页
函数的参数是按值传递

函数的参数是按值传递

作者: 弗利萨mom | 来源:发表于2021-03-10 21:45 被阅读0次

先看个传参为原始值的例子

function add (num) { // num其实是一个局部变量,是(在add函数被调用时候)count被复制到参数num的
       num += 10
      return num
}
let count = 100
add(100)
console.log(count) // 100 不受函数内部干扰,事实是参数num和变量count互不干扰

下面讨论传参是引用值的例子

function setName (obj) {
        obj.name = 'zhangsan'
}
let person = new Object()
setName(person)
console.log(person.name) // zhangsan

当调用函数,函数内部给obj设置了name值,函数外部也反映了这个变化,但不代表函数传参是按引用传参。之所以函数外部也被干扰,是因为obj指向的对象保存在全局作用域的堆内存上。

再看下面这个例子可以证明对象是按值传递的

function setName(obj) {
     obj.name = 'zhangsan'
     obj = new Object()
     obj.name = 'lisi'
 }
let person = new Object()
setName(person)
console.log(person.name) // zhangsan

如果person是按引用传递的,那么person应该将指针改为name为lisi的对象,但我们访问person.name时,原始的引用仍然没变。
当obj在本地被重写时,它变成了指向本地的指针,与函数外部的互不干扰。(这个本地对象在函数执行结束时被销毁了)

相关文章

  • 再学JS--函数参数传递类型

    JavaScript的函数参数传递分为按值传递、按引用传递以及按共享传递。 按值传递 什么是按值传递? 把函数外部...

  • 2019-06-26

    深入理解JavaScript 参数按值传递 定义:ECMAScript中所有函数的参数都是按值传递的。 值传递:函...

  • 值传递or引用传递

    javascript都是按值传递 javascript的函数的参数传递,传递的都是值,参数是 Object 类型的...

  • golang学习笔记9:函数参数与返回值

    按值传递和按引用传递 Go 默认使用按值传递来传递参数,也就是传递参数的副本。函数接收参数副本之后,在使用变量的过...

  • 面向对象——方法的值传递和引用传递

    带参函数 方法的值传递 按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递 按值传递重要特点:传递的是...

  • golang笔记之函数

    函数参数传递类型 1.按值传递:Go 默认使用按值传递来传递参数,也就是传递参数的副本。 2.引用传递:如果你希望...

  • PHP(4)函数

    一、函数参数 按值传递参数,函数内部的改变不会影响传进去的变量 按引用传递参数,需要在参数前面加上 & 符号 默认...

  • 数据结构与算法 javascript

    基础概念 javascript中,函数的参数传递方式都是按值传递,没有按引用传递的参数。但是javascript中...

  • 第七章 函数(2)函数参数和按值传递

    (二)函数参数和按值传递 1.形参,实参,参数和参量 函数参数的传递中,用于接收传递值的变量被称为形参,传递给函...

  • C++ 函数的一些重点

    函数的引用参数使用 通过引用传递参数 一般函数,如: 其参数总是按值传递。这意味着,在调用函数时,传递给函数的是调...

网友评论

      本文标题:函数的参数是按值传递

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