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}

总得来说三种方式都是按值进行传参的,但是这个'值'的含义确有不同:

  1. 第一个: val 传递的是栈中的真实值,
  2. 第二个与第三个: val 传递的是 存放在堆中的真实值指向的栈中的引用值
posted @ 2021-11-18 15:33  Mmonologue  阅读(318)  评论(0)    收藏  举报