Разбор пытанняў з рэальных сумоўяў JS. Практыка
сумоўе практыка js beginner
Пытанне:
Што ўбачым у кансолі?
text1var a = {}; 2function clear(a) { 3 a.b = 2; 4 a = null; 5 } 6clear(a); 7console.log(a);
Кароткі адказ
text1{ b: 2 }
Падрабязны адказ
Усе тыпы даных у JS можна падзяліць на спасылкавыя тыпы і прымітыўныя.
Пераменная a адносіцца да спасылкавага тыпу даных. Таму мы маем справу з адным аб'ектам і дзьвума спасылкамі на яго.
Першая спасылка - глабальная пераменная a, другая - спасылка, перададзеная ў функцыю ў якасці аргумента.
text1var a = {}; 2function clear(a) { 3 a.b = 2; // у гэтым радку дадаем па спасылцы ўласцівасць `b` аб'екту => { b: 2 } 4 a = null; 5 } 6clear(a); 7console.log(a);
Цяпер маем 2 спасылкі на аб'ект { b: 2 }. У наступным радку кода выдаляем спасылку (змяняем значэнне лакальнай пераменнай a).
text1var a = {}; 2function clear(a) { 3 a.b = 2; 4 a = null; // змянілі значэнне лакальнай пераменнай `а` 5 } 6clear(a); 7console.log(a);
У выніку засталася толькі адна спасылка на аб'ект { b: 2 } з глабальнай пераменнай a.
Таму ў кансолі ўбачым { b: 2 }.
, 2023-02-03
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)