亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ES6 Array.find()方法問題

ES6 Array.find()方法問題

Helenr 2019-03-16 15:33:18
問題:關于通過find方法查找出來的值,并修改該值,原始數組是否修改在該數組元素為原始類型和對象中表現不一樣。現象:使用find方法查找出來元素,并修改該元素:如果這個元素是個原始類型的時候,原來的數組不會被修改;但如果這個元素是個對象的,原來的數組會被修改?示例代碼:// 數組中元素為原始類型const courses = [    "courses1",      "courses2",      "course3"];let course = courses.find(item => item === "courses1");console.log(courses); // ["courses1", "courses2", "course3"]course = "new course";console.log(courses); // ["courses1", "courses2", "course3"]// 數組中元素為對象const courses = [     { "id": 1, "name": "course1" },     { "id": 2, "name": "course2" },     { "id": 3, "name": "course3" } ];let course = courses.find(item => item.id === 1);console.log(courses); course.name = "new course"; // [{ id: 1, name: "course1" }, { id: 2, name: "course2" }, { id: 3, name: "course3" }]console.log(courses); // [{ id: 1, name: "new course" }, { id: 2, name: "course2" }, { id: 3, name: "course3" }]
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

和find函數沒關系,了解下基礎類型和應用類型。
基本類型的數據是存放在棧內存中的,而引用類型的數據是存放在堆內存中的。
基礎類型:

let a = 1
b = a
b = 2
console.log(a)
//1

基本類型的復制就是在棧內存中開辟出了一個新的存儲區域用來存儲新的變量,這個變量有它自己的值,互不影響。
引用變量:

let obj1 = {a:1}let obj2 = obj1
obj2.a = 2console.log(obj1)// {a:2}

obj1和obj2這兩個引用指向同一內存(對象在堆內存里),任何一個引用都可以做更改,所以一個改了,另一個也變了。


查看完整回答
反對 回復 2019-03-16
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

你把const替換成let或者var,再試試?

看錯問題了告辭


查看完整回答
反對 回復 2019-03-16
  • 2 回答
  • 0 關注
  • 479 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號