From 816ac814e8a11897db45dfad83cfdd9d3dae55fb Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 16 Aug 2021 09:54:35 +0900 Subject: Web/JavaScript/Reference/Errors以下の5文書をMarkdown化 (#1971) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 5文書をMarkdown化 - 2021/08/07時点の最新版に同期 --- .../reference/errors/read-only/index.html | 85 ---------------------- 1 file changed, 85 deletions(-) delete mode 100644 files/ja/web/javascript/reference/errors/read-only/index.html (limited to 'files/ja/web/javascript/reference/errors/read-only/index.html') diff --git a/files/ja/web/javascript/reference/errors/read-only/index.html b/files/ja/web/javascript/reference/errors/read-only/index.html deleted file mode 100644 index f3c6566eac..0000000000 --- a/files/ja/web/javascript/reference/errors/read-only/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: 'TypeError: "x" is read-only' -slug: Web/JavaScript/Reference/Errors/Read-only -tags: - - Error - - Errors - - JavaScript - - TypeError -translation_of: Web/JavaScript/Reference/Errors/Read-only ---- -
{{jsSidebar("Errors")}}
- -

The JavaScript strict - mode-only exception "is read-only" occurs when a global variable or object - property that was assigned to is a read-only property.

- -

エラーメッセージ

- -
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge)
-TypeError: "x" is read-only (Firefox)
-TypeError: 0 is read-only (Firefox)
-TypeError: Cannot assign to read only property 'x' of #<Object> (Chrome)
-TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)
-
- -

エラーの種類

- -

{{jsxref("TypeError")}}

- -

何がうまくいかなかったのか?

- -

値を割り当てようとしたグローバル変数、またはオブジェクトのプロパティが読み取り専用プロパティです。 (技術的には、 non-writable データプロパティ です。)

- -

このエラーは、strict モードコード のときにだけ発生します。strict コードではない場合、割り当ては無視されるだけです。

- -

- -

無効なケース

- -

読み取り専用プロパティはさほど一般的ではありませんが、 {{jsxref("Object.defineProperty()")}}、または {{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
-
- -

JavaScript の組み込みにも、いくつか読み取り専用プロパティがあります。 Math の定数を再定義しようとしたとします。

- -
'use strict';
-Math.PI = 4;  // TypeError
-
- -

残念ながらできません。

- -

グローバル変数の undefined も読み取り専用のため、このようにすると悪名高い "undefined is not a function" エラーが発生します。

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

有効な場合

- -
'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 (解剖学的にはおかしいけれども)
-
- -

関連項目

- - -- cgit v1.2.3-54-g00ecf