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

2020-04-22  本文已影响0人  Territory_Cheng

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,并不会修改原值。所以第二、第三个例子其实都是按共享传递。

上一篇下一篇

猜你喜欢

热点阅读