--- title: 'TipusError: "x" es només de lectura' slug: Web/JavaScript/Reference/Errors/Read-only tags: - Errors - JavaScript - TypeError translation_of: Web/JavaScript/Reference/Errors/Read-only original_slug: Web/JavaScript/Reference/Errors/Nomes-Lectura ---
TipusError: "x" es només de lectura (Firefox) TipusError: 0 es només de lectura (Firefox) TipusError: No es pot fer l'assignació a la propietat 'x' de #<Object> que es només de lectura (Chrome) TipusError: No es pot fer l'assignació a la propietat '0' de [object Array] (Chrome)
{{jsxref("TypeError")}}
La variable global o propietat de l'objecte a la qual s'ha volgut fer l'assignació es només de lectura. (Tècnicament, es una propietat de no-escriptura.)
Aquest error succeeix només en codi en mode estricte. En codi en mode no estricte, l'assignació es ignorada de manera silenciosa.
Propietats de només lectura no son súper comuns, però es poden donar quan es fa servir {{jsxref("Object.defineProperty()")}} o {{jsxref("Object.freeze()")}}.
'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
També hi ha unes poques propietats de només lectura en la construcció de JavaScript. Potser que hagis provat de redefinir una constant matemàtica.
'use strict'; Math.PI = 4; // TypeError
Ho sentim, no pots fer això.
La variable global undefined
també es només de lectura, llavors no pots silenciar l'infame error "undefined no es una funció" fent això:
'use strict'; undefined = function() {}; // TypeError: "undefined" es només de lectura
'use strict'; var obj = Object.freeze({name: 'Score', points: 157}); obj = {name: obj.name, points: 0}; // reemplaçant-ho amb un nou objecte funciona 'use strict'; var LUNG_COUNT = 2; // Una `var` funciona, perque no es de només lectura LUNG_COUNT = 3; // ok (anatòmicament potser, però poc probable)