Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. TypeError: "x" is read-only(Ошибка Типа: "x" только для чтения)

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

TypeError: "x" is read-only(Ошибка Типа: "x" только для чтения)

Сообщения

TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)TypeError: "x" доступен только для чтения (Firefox)TypeError: 0 доступен только для чтения (Firefox)TypeError: не удаётся назначить только для чтения свойство "x" из #<объект> (Chrome)TypeError: не удаётся назначить только для чтения свойство '0' [массив объектов] (Chrome)

Тип ошибки

TypeError

Что пошло не так?

Назначенное свойство глобальной переменной или объекта является свойством только для чтения. (Технически это свойство данных, недоступное для записи.)

Эта ошибка возникает только в коде строгого режима. В нестрогом коде назначение игнорируется.

Примеры

недействительные кейсы

Свойства только для чтения не очень распространены, но их можно создать с помощьюObject.defineProperty() илиObject.freeze().

js
"use strict";var obj = Object.freeze({ name: "Elsa", score: 157 });obj.score = 0; // TypeError("use strict");Object.defineProperty(this, "LUNG_COUNT", { value: 2, writable: false });LUNG_COUNT = 3; // TypeError("use strict");var frozenArray = Object.freeze([0, 1, 2]);frozenArray[0]++; // TypeError

В JavaScript также встроено несколько свойств, доступных только для чтения. Возможно, вы пытались переопределить математическую константу.

js
"use strict";Math.PI = 4; // TypeError

Прости, ты не можешь этого сделать.

Глобальная переменная undefined также доступна только для чтения, поэтому вы не можете заставить замолчать печально известную ошибку "undefined is not a function:

js
"use strict";undefined = function () {}; // TypeError: "undefined" доступен только для чтения

Правильные кейсы

js
"use strict";var obj = Object.freeze({ name: "Score", points: 157 });obj = { name: obj.name, points: 0 }; // замена его на новый работающий объект("use strict");var LUNG_COUNT = 2; // "var` работает, потому что он не только для чтенияLUNG_COUNT = 3; // ok (анатомически маловероятно, хотя)

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp