js 函数参数按值传参
js 函数按值传参
通过几个案例对[红宝书]上所述的:'js函数按值传参'进行诠释理解
- 第一个:
let a = 2
const fn = (val) => {
val = 3 //更改了栈中的真实值
console.log('val', val) //3
}
fn(a)
console.log('a', a) //2
- 第二个:
let a = {b: 2}
const fn = (val) => {
val.b = 3 // 更改了堆中的值
console.log('val', val) //{b: 3}
}
fn(a)
console.log('a', a) // {b : 3}
- 第三个:
let a = {b: 2}
const fn = (val) => {
val = 3 // 更改了栈中的引用值
console.log('val', val) //3
}
fn(a)
console.log('a', a) //{b : 2}
总得来说三种方式都是按值进行传参的,但是这个'值'的含义确有不同:
- 第一个: val 传递的是栈中的真实值,
- 第二个与第三个: val 传递的是 存放在堆中的真实值指向的栈中的引用值