Значения JavaScript в V8 представлены как объекты и размещаются в
куче V8, независимо от того, являются ли они объектами, массивы, числа или
строки. Это позволяет нам представлять любое значение как указатель на
объект.
в Python: (На этой странице) каждая вещь является объектом и целые числа являются неизменяемыми
если мы попробуем этот код (на Python):
Код: Выделить всё
x=333
r=x
print(id(x)==id(r)) #True
r=444
print(x) #333
Код: Выделить всё
x=333
Код: Выделить всё
r=x
в r=444, поскольку целые числа в Python неизменяемы по своей природе, будет создан новый объект (по другому адресу), и значение нового объекта равно 444, а адрес A2 по-прежнему имеет значение 333, а x равно все еще указывая на адрес A2
Итак, мой вопрос в этом коде (JS (V8)):
Код: Выделить всё
let x=33.5;
let y=x;
in let x=33.5; x указывает на объект в куче, и этот объект будет содержать значение (что такое 33.5 )
in let y=x; создаст еще один новый объект в куче, и этот объект (также) будет содержать значение (которое равно 33,5 ) ?
ИЛИ (точно как в Python) здесь происходит просто y и x, которые будут указывать на тот же объект и ( поскольку примитивы в JS ( и в V8) являются неизменяемыми. Только когда вы попытаетесь изменить значение y (или когда вы попытаетесь изменить значение x), будет создан новый объект (содержащий новое значение)?< /p>
Примечание: я не говорю, что JS — это Python или JS похож на Python. Я просто говорю о поведении JS и о поведении Python
Подробнее здесь: https://stackoverflow.com/questions/792 ... ike-python