Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. JavaScript-Fehlerreferenz
  5. TypeError: "x" ist schreibgeschützt

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

TypeError: "x" ist schreibgeschützt

Die JavaScript-strict mode-only Ausnahme"ist schreibgeschützt" tritt auf, wenn einer globalen Variable oder einem Objekteigenschaftein schreibgeschützter Wert zugewiesen wurde.

Meldung

TypeError: Cannot assign to read only property 'x' of #<Object> (V8-based)TypeError: "x" is read-only (Firefox)TypeError: Attempted to assign to readonly property. (Safari)

Fehlertyp

TypeError nur imstrict mode.

Was ist schiefgelaufen?

Der globalen Variable oder der Objekteigenschaft, der zugewiesen wurde, ist eine schreibgeschützte Eigenschaft.(Technisch gesehen ist es einenicht-schreibbare Dateneigenschaft.)

Dieser Fehler tritt nur imstrict mode code auf. Innicht-strict code wird die Zuweisung stillschweigend ignoriert.

Beispiele

Ungültige Fälle

Schreibgeschützte Eigenschaften sind nicht sehr häufig, können aber mitObject.defineProperty() oderObject.freeze() erstellt werden.

js
"use strict";const 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");const frozenArray = Object.freeze([0, 1, 2]);frozenArray[0]++; // TypeError

Es gibt auch einige schreibgeschützte Eigenschaften, die in JavaScript eingebaut sind. Vielleicht haben Sie versucht,eine mathematische Konstante neu zu definieren.

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

Entschuldigung, das können Sie nicht tun.

Die globale Variableundefined ist ebenfalls schreibgeschützt, sodass Sie denberüchtigten Fehler "undefined is not a function" nicht durch Folgendes unterdrücken können:

js
"use strict";undefined = function () {}; // TypeError: "undefined" is read-only

Gültige Fälle

js
"use strict";let obj = Object.freeze({ name: "Score", points: 157 });obj = { name: obj.name, points: 0 }; // replacing it with a new object works

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp