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