一次基礎(chǔ)掌握不牢的教訓(xùn)...

今天在調(diào)試代碼時遇到一個問題猾担,剛開始想不明白,然后分析了一下后械巡,才知道其中的問題,這也是一個基礎(chǔ)的問題昼汗,(所以基礎(chǔ)是很重要的)

代碼如下:

var a = 3;
a = a * 2;
console.log(a); // a = 6

var b = 1, c =2, d = 3;
var arr1 = [b,c,d];
arr1.forEach((item)=>{
    item = item * 2;
});
console.log(arr1); //arr1 = [1,2,3];

var arr2 = [{a:1},{a:2},{a:3}];
arr2.forEach((item)=>{
    item.a = item.a*2;
});
console.log(arr2); //arr2 = [{a:2},{a:4},{a:6}]

如果你能不假思索的得出上面的答案,我相信你對這方面的知識已經(jīng)很了解了,所以可以不用繼續(xù)往下看了观谦,如果你像我今天該開始一樣,覺得有點疑惑的話桨菜,那么這篇文文章就很適合你豁状。

  1. 首先我們應(yīng)該知道的是,在 javascript 中倒得,基本數(shù)據(jù)類型是通過值傳遞的泻红。

比如:

var a=1,b;
    b = a;// 這時 a 和 b 的值都為 1
    a = 2;//這時 a 的值 為 2,b 的值還是為 1 屎暇,

01.jpg

所以當(dāng) b = a承桥, a = 2;a直接賦給b的值 是1根悼,所以 b 就等于 1凶异,而 a 的變化改變不了 b 的值

  1. 在 js 中復(fù)雜數(shù)據(jù)類型是通過 引用傳遞的

比如:

var v1 = { a:1 };
var v2 = v1; //v2 = { a:1 }
v1.a = 2;
console.log(v2.a); // v2.a = 2;
02.jpg

了解了以上的一些基礎(chǔ)知識后,就不難理解最開始的代碼輸出結(jié)果了挤巡。

1.
    var a = 3;
    a = a * 2;
    console.log(a); // a = 6
    
2. 
    var b = 1, c =2, d = 3;
    var arr1 = [b,c,d];
    arr1.forEach((item)=>{
    item = item * 2;
    });
    console.log(arr1); //arr1 = [1,2,3];
    
3. 
    var arr2 = [{a:1},{a:2},{a:3}];
    arr2.forEach((item)=>{
    item.a = item.a*2;
    });
    console.log(arr2); //arr2 = [{a:2},{a:4},{a:6}]
    

第一段代碼當(dāng)然好理解剩彬,就是簡單的值傳遞而已,然而第二段代碼呢矿卑?我剛開始有點困惑的是喉恋,既然也是值傳遞,那為什么它的值沒有變化還是原先的值母廷,注意:這里我忽略了重要的一點轻黑,所以導(dǎo)致我不明白,那就是在這個 forEach 的遍歷中琴昆,還存在一個賦值的過程氓鄙,就是這個過程導(dǎo)致 arr1 的值沒有改變,在每次循環(huán)中 arr1中的值都會賦給 item业舍, 就是 item = b抖拦, item = c,item = d舷暮,所以后面對item 的改變就與 b态罪,v,d 沒有關(guān)系了下面。
所以那么 第三段也就很好理解了复颈,他也與第二段代碼一樣,每次回存在一個賦值诸狭,但是注意的是 arr2 中存儲的是對象券膀,就是 item = { a:1 } ...,這樣 item 仍然指向 arr2 中對象君纫,所以這時對 item 的修改就可以通過 arr2 來反應(yīng)出來。

雖然這只是自己的粗心造成的芹彬,但仍然是自己的基礎(chǔ)不扎實而導(dǎo)致的蓄髓,所以想要成為好的程序員,基礎(chǔ)是非常重要的舒帮。希望大家都能注重基礎(chǔ)的知識会喝,為自己學(xué)習(xí)高級東西而打下堅實的基礎(chǔ)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玩郊,一起剝皮案震驚了整個濱河市肢执,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌译红,老刑警劉巖预茄,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侦厚,居然都是意外死亡耻陕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門刨沦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗宣,“玉大人,你說我怎么就攤上這事想诅≌倥樱” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵来破,是天一觀的道長篮灼。 經(jīng)常有香客問我,道長徘禁,這世上最難降的妖魔是什么穿稳? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮晌坤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旦袋。我一直安慰自己骤菠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布疤孕。 她就那樣靜靜地躺著商乎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭阀。 梳的紋絲不亂的頭發(fā)上鹉戚,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天鲜戒,我揣著相機與錄音,去河邊找鬼抹凳。 笑死遏餐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赢底。 我是一名探鬼主播失都,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼幸冻!你這毒婦竟也來了粹庞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤洽损,失蹤者是張志新(化名)和其女友劉穎庞溜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碑定,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡流码,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了不傅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旅掂。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖访娶,靈堂內(nèi)的尸體忽然破棺而出商虐,到底是詐尸還是另有隱情,我是刑警寧澤崖疤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布秘车,位于F島的核電站,受9級特大地震影響劫哼,放射性物質(zhì)發(fā)生泄漏叮趴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一权烧、第九天 我趴在偏房一處隱蔽的房頂上張望眯亦。 院中可真熱鬧,春花似錦般码、人聲如沸妻率。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宫静。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孤里,已是汗流浹背伏伯。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捌袜,地道東北人说搅。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像琢蛤,于是被迫代替她去往敵國和親蜓堕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本文為轉(zhuǎn)載: 作者:zyydeveloper 鏈接:http://www.reibang.com/p/5f776a...
    Buddha_like閱讀 864評論 0 2
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程博其,因...
    小菜c閱讀 6,365評論 0 17
  • http://blog.csdn.net/david21984/article/details/57451917 ...
    紫色冰雨閱讀 550評論 0 0
  • 終于決定告別這個QQ了套才。這個QQ忘記是什么時候申請的了,里面沒有現(xiàn)實中的朋友慕淡。都是網(wǎng)絡(luò)中的朋友背伴。每當(dāng)想到離開,就有...
    OO碰到OO閱讀 169評論 0 0
  • 偷酒之后峰髓,為什么說是偷酒傻寂?只因為我有一個詩歌與遠(yuǎn)方、美酒和故事的夢想携兵〖碴可是家庭與工作是只能讓我西裝革履,冠冕...
    北方有于閱讀 272評論 0 0