From fa9d0b4ad49db970ba8707a4f6ab9ce17b5383b8 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 25 Jun 2021 01:40:44 +0900 Subject: Web/JavaScript/Reference/Errors/P-V* を更新 (#1205) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Web/JavaScript/Reference/Errors/P-V* を更新 2021/06/14 時点の英語版に同期 * スラッグを修正 --- .../reference/errors/read-only/index.html | 48 ++++++++++++---------- 1 file changed, 26 insertions(+), 22 deletions(-) (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 index 7aa68e012f..f3c6566eac 100644 --- a/files/ja/web/javascript/reference/errors/read-only/index.html +++ b/files/ja/web/javascript/reference/errors/read-only/index.html @@ -2,6 +2,7 @@ title: 'TypeError: "x" is read-only' slug: Web/JavaScript/Reference/Errors/Read-only tags: + - Error - Errors - JavaScript - TypeError @@ -9,21 +10,26 @@ 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: "x" is read-only (Firefox)
+

エラーメッセージ

+ +
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 データプロパティ です。)

+

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

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

@@ -33,40 +39,40 @@ TypeError: Cannot assign to read only property '0' of [object Array] (Chrome)

読み取り専用プロパティはさほど一般的ではありませんが、 {{jsxref("Object.defineProperty()")}}、または {{jsxref("Object.freeze()")}} を使用して生成できます。

-
"use strict";
-var obj = Object.freeze({name: "Elsa", score: 157});
+
'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});
+'use strict';
+Object.defineProperty(this, 'LUNG_COUNT', {value: 2, writable: false});
 LUNG_COUNT = 3;  // TypeError
 
-"use strict";
+'use strict';
 var frozenArray = Object.freeze([0, 1, 2]);
 frozenArray[0]++;  // TypeError
 
-

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

+

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

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

残念ながらできません。

-

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

+

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

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

有効なケース

+

有効な場合

-
"use strict";
-var obj = Object.freeze({name: "Score", points: 157});
+
'use strict';
+var obj = Object.freeze({name: 'Score', points: 157});
 obj = {name: obj.name, points: 0};   // 新しいオブジェクトで置き換える
 
-"use strict";
+'use strict';
 var LUNG_COUNT = 2;  // `var` が使われているので、読み取り専用ではない
 LUNG_COUNT = 3;  // ok (解剖学的にはおかしいけれども)
 
@@ -74,8 +80,6 @@ LUNG_COUNT = 3; // ok (解剖学的にはおかしいけれども)

関連項目

-- cgit v1.2.3-54-g00ecf