Как присваивание переменных работает в JavaScript?

На ваш вопрос уже был дан javascript-disabled удовлетворительный ответ ecmascript от Squeegy - он не имеет .js ничего общего с объектами javascript и примитивами, но с переназначением javascript-execution переменных и установкой свойств javascript-disabled в одном и том же объекте, на ecmascript который указывает ссылка.

Похоже, что js в ответах и ​​комментариях js много путаницы в отношении javascript-dom типов JavaScript, поэтому ecmascript вот небольшое введение в vanillajs систему типов JavaScript:

В javascript-dom JavaScript есть два принципиально .js разных типа значений: примитивы vanilla-js и объекты (и нет ничего похожего ecmascript на "хеш").

Строки, числа и .js логические значения, а также javascript-execution null и undefined являются примитивами, объекты javascript-disabled - это все, что может иметь javascript-disabled свойства. Даже массивы и vanilla-javascript функции являются обычными ecmascript объектами и поэтому могут javascript-disabled иметь произвольные свойства. Они vanilla-javascript отличаются только внутренним javascript свойством [[Class]] (функции js дополнительно имеют свойство, называемое js [[Call]] и [[Construct]], но javascript-execution это подробности).

Причина, по ecmascript которой примитивные значения javascript могут вести себя как объекты, связана javascript-execution с автобоксированием, но сами javascript-execution примитивы не могут содержать ecmascript никаких свойств.

Вот пример:

var a = 'quux';
a.foo = 'bar';
document.writeln(a.foo);

Будет .js выведен undefined: a содержит примитивное javascript-library значение, которое повышается javascript-disabled до объекта при назначении vanilla-javascript свойства foo. Но этот новый js объект немедленно отбрасывается, поэтому javascript-disabled значение foo теряется.

Подумайте vanilla-javascript об этом так:

var a = 'quux';
new String(a).foo = 'bar'; // we never save this new object anywhere!
document.writeln(new String(a).foo); // a completly new object gets created

javascript

2022-08-13T20:57:25+00:00