美文网首页
再学JS--函数参数传递类型

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

作者: Territory_Cheng | 来源:发表于2020-04-22 09:42 被阅读0次

JavaScript的函数参数传递分为按值传递、按引用传递以及按共享传递。

按值传递

什么是按值传递?

把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。

var value = 1
function foo(o) {
    o =2
    console.log(o)
}
foo(value)
console.log(value)  // 1

当传递value到函数foo中的时候,相当于拷贝了一份value,假设拷贝的这份叫做_value,函数中修改的都是_value的值,而不会影响原来的value值。

引用传递

引用传递就是传递对象的引用,函数内部对参数的任何改变都会影响该对象的值,因为两者引用的是同一个对象。

var obj = {
    value: 1
}
function foo(o) {
    o.value = 2
}
foo(obj)
console.log(obj.value)  // 2

按共享传递

什么是按共享传递?再看个例子

var obj = {
    value: 1
}
function foo(o) {
    o = 2
}
foo(obj)
console.log(obj.value)  // 1

共享传递是指在传递对象的时候,传递对象引用的副本。

注意:按引用传递是传递对象的引用,而按共享传递是传递对象的引用的副本。

所有如果修改o.value可以通过引用找到原值,但是直接修改o,并不会修改原值。所以第二、第三个例子其实都是按共享传递。

相关文章

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

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

  • JavaScript函数的参数传递

    JavaScript函数的参数传递取决于参数的类型: 若参数为基本类型,那么按值传递 若参数为引用类型,那么按共享...

  • 值传递or引用传递

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

  • Python 函数的参数传递\*args和\**kwargs

    Python 函数的参数传递*args和**kwargs 参数传递机制具有值传递(int、float等值数据类型)...

  • 深入学习JavaScript-函数&闭包

    函数 理解参数 JavaScript函数不介意传递多少个参数,也不介意传递参数的数据类型。也就是说函数定义接受多少...

  • golang笔记之函数

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

  • golang学习笔记(七)复合类型

    复合类型 类型名称作为函数参数pointer指针值传递array数组值传递slice切片引用传递map字典引用传递...

  • 4.6 使用函数作为另一个函数的参数 [Swift教程]

    1. 每个函数都是有类型的,包括函数的参数类型和返回类型。因此可以像任何其它类型一样,将函数作为参数传递给其它的函...

  • Swift函数

    默认参数 可变参数必须是相同的类型 引用类型(指针的传递)1,默认情况下,函数的参数是值传递,如果想改变外面的变量...

  • 存取变长参数列表va_start,va_end,va_arg

    1.在C中,变长参数的函数即参数个数可变、参数类型不定 的函数。当我们无法列出传递函数的所有实参的类型和数目时,以...

网友评论

      本文标题:再学JS--函数参数传递类型

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