JavaScript中的值传递和引用传递

2018-08-08  本文已影响0人  js好难学啊
2018/08/07

先说说我对这两个传递的理解吧

  1. 值传递
    在JavaScript中5种基本数据类型都是按值传递的。
let foo = 1
let bar = foo

bar = 2
console.log(foo) // foo = 1
  1. 引用传递
    那么还有一个Object的数据类型肯定是按照引用传递的了
let foo = {
  message: 'i am message'
}
let bar = foo

bar.message = 'no, i am text'
console.log(foo) // foo = {message: "no, i am text"}

//我女朋友看小说把眼睛都看花了真的拼啊 2018/08/07 23:19

2018/08/08

继续昨天的说:
在我刚刚看到引用传递时,我以为是如下这个例子的

let foo = {
  message: 'i am message'
}
let bar = foo

bar = 'no, i am text'
// [我以为它会变成'no, i am text']
//结果显然我是错的
console.log(foo) // foo = {message: 'i am message'}
console.log(bar) // bar ='no, i am text'

感觉就是当bar被重新赋值时,原来指向foo的指针就断开了。 我对这个的理解非常差,希望有大神看到的时候可以指正我。

参数传递

红宝书中说到: ECMAScript中所有函数的参数都是按值传递的。

参数传递可以传递基本数据类型和引用数据类型。

常见的Demo就不记录了, 记录一个红宝书中的例子

function setName(object) {
  object.name = 'Jack'
  object = new Object() //我感觉在此处与上文相似,指向原object的指针断开了,指向了新的元素
  object.name = 'Owen'
}

let person = new Object()
setName(person)
console.log(person.name)

//我女朋友又不睡觉,太可恶了每天都要我监督她 2018/08/08 23:30

上一篇下一篇

猜你喜欢

热点阅读