Size: a a a

2021 April 02

Э

Эд in JS Liberty
Так красивее, чем map, не сделать
источник

Э

Эд in JS Liberty
reduce вообще для того, чтоб свести коллекцию к 1 значению
источник

А

Александр in JS Liberty
а... спасибо большое. Я пытался сделать наоборот))
источник

В

Виктория in JS Liberty
m a x × Instagram АR-ÇᖇΞΔƮØᖇ
Всем доброго времени суток!
В процессе изучения js возник вопрос по теме хранения и передачи значений в переменных. Насколько я понял, js хранит в переменной указатель на память, в которой сидит само значение. То есть если взять объект, создать другую переменную, присвоить новой переменной значение переменной изначального объекта - это будут просто две ссылки на один и тот же объект. Я проверил изменить какое-нибудь свойство объекта - действительно меняется объект по обоим переменным. Но если я возьму, и просто присвою одной из переменных любое какое-нибудь значение, например, числовое 5, то по второй переменной останется тот же объект. И теперь вопрос: почему так? Мы ведь изменили содержание ячейки переменной, на которую ссылается вторая переменная тоже. Но, судя по всему, работает это как-то по другому...
Ну есть у тебя объект:

let obj = {}

Ты создаешь еще одну переменную и копируешь туда значение из первой переменной:

let obj2 = obj

Что в итоге имеется?

Две переменные, которые хранят АДРЕС ячейки памяти, где в свою очередь хранится сам объект

Предположим, для примера, что 0xc000018050 это адрес (в шестнадцатеричной системе счисления), по которому хранится объект, то есть в переменных obj и obj2 записано 0xc000018050

Грубо говоря:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

При обращении к свойству объекта мы косвенно обращаемся к ячейке памяти по адресу 0xc000018050, и если перезаписать свойство, то изменения, само собой, будут видны и для obj2, так как это ссылка на ту же самую область памяти

А если ты присвоишь какое-то новое значение САМОЙ переменной, скажем obj, то есть сделаешь так:

obj = 5

То этом случае ты просто перезатрешь хранящееся там значение, а именно ССЫЛКУ, САМУ ССЫЛКУ на область памяти, в которой хранится объект. С самим объектом ты не сделаешь ровным счетом ничего. В итоге ситуация будет следующей:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

obj = 5 // теперь в переменной obj хранится не 0xc000018050, а просто значение 5

obj2 // по-прежнему хранит ссылку 0xc000018050
источник

В

Виктория in JS Liberty
На самом деле все гораздо сложнее, но для объяснения подойдет и такой вариант
источник

AK

Aleksei Kowalski in JS Liberty
Виктория
На самом деле все гораздо сложнее, но для объяснения подойдет и такой вариант
Лишь бы на отвали
Вот так и с промисами было
источник

В

Виктория in JS Liberty
Aleksei Kowalski
Лишь бы на отвали
Вот так и с промисами было
Че ты начинаешь?
источник

В

Виктория in JS Liberty
Ты опять хочешь все испортить?
источник

А

Алексей in JS Liberty
И с хуками
источник

В

Виктория in JS Liberty
Леша, полечи уже свое раздвоение личности в конце концов
источник

Э

Эд in JS Liberty
Лол
источник

p

persona x grata in JS Liberty
Виктория
Ну есть у тебя объект:

let obj = {}

Ты создаешь еще одну переменную и копируешь туда значение из первой переменной:

let obj2 = obj

Что в итоге имеется?

Две переменные, которые хранят АДРЕС ячейки памяти, где в свою очередь хранится сам объект

Предположим, для примера, что 0xc000018050 это адрес (в шестнадцатеричной системе счисления), по которому хранится объект, то есть в переменных obj и obj2 записано 0xc000018050

Грубо говоря:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

При обращении к свойству объекта мы косвенно обращаемся к ячейке памяти по адресу 0xc000018050, и если перезаписать свойство, то изменения, само собой, будут видны и для obj2, так как это ссылка на ту же самую область памяти

А если ты присвоишь какое-то новое значение САМОЙ переменной, скажем obj, то есть сделаешь так:

obj = 5

То этом случае ты просто перезатрешь хранящееся там значение, а именно ССЫЛКУ, САМУ ССЫЛКУ на область памяти, в которой хранится объект. С самим объектом ты не сделаешь ровным счетом ничего. В итоге ситуация будет следующей:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

obj = 5 // теперь в переменной obj хранится не 0xc000018050, а просто значение 5

obj2 // по-прежнему хранит ссылку 0xc000018050
На learn.javascript понятнее написано, не проще было туда отправить
источник

p

persona x grata in JS Liberty
Aleksei Kowalski
Лишь бы на отвали
Вот так и с промисами было
А ты промисы так и не выучил?
источник

p

persona x grata in JS Liberty
Или о чем речь
источник

p

persona x grata in JS Liberty
Виктория
Ну есть у тебя объект:

let obj = {}

Ты создаешь еще одну переменную и копируешь туда значение из первой переменной:

let obj2 = obj

Что в итоге имеется?

Две переменные, которые хранят АДРЕС ячейки памяти, где в свою очередь хранится сам объект

Предположим, для примера, что 0xc000018050 это адрес (в шестнадцатеричной системе счисления), по которому хранится объект, то есть в переменных obj и obj2 записано 0xc000018050

Грубо говоря:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

При обращении к свойству объекта мы косвенно обращаемся к ячейке памяти по адресу 0xc000018050, и если перезаписать свойство, то изменения, само собой, будут видны и для obj2, так как это ссылка на ту же самую область памяти

А если ты присвоишь какое-то новое значение САМОЙ переменной, скажем obj, то есть сделаешь так:

obj = 5

То этом случае ты просто перезатрешь хранящееся там значение, а именно ССЫЛКУ, САМУ ССЫЛКУ на область памяти, в которой хранится объект. С самим объектом ты не сделаешь ровным счетом ничего. В итоге ситуация будет следующей:

let obj = {} // 0xc000018050
let obj2 = obj // 0xc000018050

obj = 5 // теперь в переменной obj хранится не 0xc000018050, а просто значение 5

obj2 // по-прежнему хранит ссылку 0xc000018050
источник

Э

Эд in JS Liberty
что это значит, уважаемые знатоки? Ерланг сайт сдох?
источник

Э

Эд in JS Liberty
Эрланг скачать не выходит
источник

p

persona x grata in JS Liberty
Эд
что это значит, уважаемые знатоки? Ерланг сайт сдох?
Ержан вставай, на работу пора
источник

Э

Эд in JS Liberty
всё, заработало, надо было подшаманить
источник

З🧟

Зомби 🧟‍♂️... in JS Liberty
Эд
что это значит, уважаемые знатоки? Ерланг сайт сдох?
нах те ерланг?
источник