From 1aff4a4fb9b0d2076029ec476846699ce6c7f637 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 27 Sep 2023 11:42:16 +0000
Subject: [PATCH 001/331] Bump markdown-it from 13.0.1 to 13.0.2 (#16160)
---
package.json | 2 +-
yarn.lock | 13 ++++++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index b9da0c4b53b266..247791256d6fcf 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"fs-extra": "^11.1.1",
"husky": "8.0.3",
"lint-staged": "14.0.1",
- "markdown-it": "^13.0.1",
+ "markdown-it": "^13.0.2",
"markdownlint-cli2": "0.10.0",
"markdownlint-rule-search-replace": "1.2.0",
"mdast-util-from-markdown": "^2.0.0",
diff --git a/yarn.lock b/yarn.lock
index d1725869c5ffac..f164502dbf32a6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -554,7 +554,7 @@ log-update@^5.0.1:
strip-ansi "^7.0.1"
wrap-ansi "^8.0.1"
-markdown-it@13.0.1, markdown-it@^13.0.1:
+markdown-it@13.0.1:
version "13.0.1"
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
@@ -565,6 +565,17 @@ markdown-it@13.0.1, markdown-it@^13.0.1:
mdurl "^1.0.1"
uc.micro "^1.0.5"
+markdown-it@^13.0.2:
+ version "13.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536"
+ integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==
+ dependencies:
+ argparse "^2.0.1"
+ entities "~3.0.1"
+ linkify-it "^4.0.1"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
markdownlint-cli2-formatter-default@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz#81e26b0a50409c0357c6f0d38d8246946b236fab"
From 5d65668d473dde5091261eceaf0019c775cd798d Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Wed, 27 Sep 2023 23:09:17 +0900
Subject: [PATCH 002/331] [ko] add index.md for `web/glossary/idl` (#16083)
---
files/ko/glossary/idl/index.md | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 files/ko/glossary/idl/index.md
diff --git a/files/ko/glossary/idl/index.md b/files/ko/glossary/idl/index.md
new file mode 100644
index 00000000000000..350c06e2dfedbe
--- /dev/null
+++ b/files/ko/glossary/idl/index.md
@@ -0,0 +1,30 @@
+---
+title: 인터페이스 정의 언어 (IDL)
+slug: Glossary/IDL
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**인터페이스 정의 언어(Interface Description Language, IDL)** 는 특정 프로그래밍 언어와 별도로 지정된 객체의 인터페이스에 사용되는 일반 언어입니다.
+
+## 콘텐츠 속성 vs 인터페이스 정의 언어 속성
+
+HTML에서, 대부분의 속성에는 **콘텐츠 속성** 및 **인터페이스 정의 언어 속성**이라는 두 가지 측면이 있습니다.
+
+콘텐츠 속성은 콘텐츠(HTML 코드)에서 설정한 속성이며, {{domxref("element.setAttribute()")}} 또는 {{domxref("element.getAttribute()")}}를 통해 설정하거나 가져올 수 있습니다. 예상 값이 정수여야 하는 경우에도 콘텐츠 속성은 항상 문자열입니다. 예를 들어, 콘텐츠 속성을 사용하여 {{HTMLElement("input")}} 요소의 `maxlength`를 42로 설정하려면, 해당 요소에 대해 `setAttribute("maxlength", "42")`를 호출해야 합니다.
+
+IDL 속성은 JavaScript 속성이라고도 합니다. IDL 속성은 `element.foo`와 같은 JavaScript 속성을 사용하여 읽거나 설정할 수 있는 속성입니다. IDL 속성은 항상 기본 콘텐츠 속성을 사용하여(그러나 변환될 수도 있음) 값을 얻을 때 값을 반환하고 이를 설정할 때 콘텐츠 속성에 무언가를 저장합니다. 즉, IDL 속성은 본질적으로 콘텐츠 속성을 반영합니다.
+
+대부분의 경우, IDL 속성은 실제로 사용되는 값을 반환합니다. 예를 들어, {{HTMLElement("input")}} 요소의 기본 `type`은 'text'이므로, `input.type="foobar"`를 설정하면, ` ` 요소는 'text' 타입(외관 및 동작하는 측면에서)이지만, 'type' 콘텐츠 속성의 값은 'foobar'입니다. 그러나, `type` IDL 속성은 문자열 'text'를 반환합니다.
+
+IDL 속성이 항상 문자열은 아닙니다. 예를 들어, `input.maxlength`는 숫자(부호 있는 long)입니다. IDL 속성을 사용할 때, 원하는 타입의 값을 읽거나 설정하므로, `input.maxlength`는 항상 숫자를 반환하고 `input.maxlength`를 설정하면, IDL 속성은 숫자 타입이 오기를 바랍니다. 다른 타입을 전달하면, 타입 변환에 대한 표준 JavaScript 규칙에 지정된 대로 자동으로 숫자로 변환됩니다.
+
+IDL 속성은 unsigned long, URL, 불리언 등과 같은 [다른 타입을 반영](https://html.spec.whatwg.org/multipage/urls-and-fetching.html#reflecting-content-attributes-in-idl-attributes)할 수 있습니다. 불행하게도, 명확한 규칙이 없고 IDL 속성이 해당 콘텐츠 속성과 함께 작동하는 방식은 속성에 따라 다릅니다. 대부분의 경우 [명세서에 표현된 규칙](https://html.spec.whatwg.org/multipage/urls-and-fetching.html#reflecting-content-attributes-in-idl-attributes)을 따르지만, 때로는 그렇지 않은 경우도 있습니다. HTML 명세서는 이를 가능한 개발자 친화적으로 만들려고 노력하지만, 다양한 이유(주로 역사적)로 일부 속성이 이상하게 동작(예, `select.size`)하므로, 해당 속성이 정확히 어떻게 작동하는지 이해하려면 명세서를 읽어야 합니다.
+
+## 같이 보기
+
+- 위키백과의 [IDL](https://en.wikipedia.org/wiki/Interface_description_language)
+- [HTML 속성 참고서](/ko/docs/Web/HTML/Attributes)
+- [인터페이스 정의 언어](https://people.eecs.berkeley.edu/~messer/netappc/Supplements/10-idl.pdf)
From ac9f5f19389830543ba3596c0891cfdb11690da0 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Thu, 28 Sep 2023 00:13:50 +0900
Subject: [PATCH 003/331] [ko] add index.md for `web/glossary/local_variable`
(#16119)
---
files/ko/glossary/local_variable/index.md | 24 +++++++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 files/ko/glossary/local_variable/index.md
diff --git a/files/ko/glossary/local_variable/index.md b/files/ko/glossary/local_variable/index.md
new file mode 100644
index 00000000000000..c3cfa4c1f2594c
--- /dev/null
+++ b/files/ko/glossary/local_variable/index.md
@@ -0,0 +1,24 @@
+---
+title: 지역 변수 (Local variable)
+slug: Glossary/Local_variable
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+이름이 {{Glossary("local scope", "로컬 범위")}} 내에서만 해당 값에 바인딩되는 {{glossary("variable", "변수")}}입니다.
+
+## 예제
+
+```js
+let global = 5; // 전역 변수
+
+function fun() {
+ let local = 10; // 지역 변수
+}
+```
+
+## 같이 보기
+
+- 위키백과의 [지역 변수](https://en.wikipedia.org/wiki/Local_variable)
From 2f67fc87e2bb7dc03a0a9ad893f449950a05192c Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 01:41:05 +0900
Subject: [PATCH 004/331] =?UTF-8?q?2023/05/10=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../close/index.md | 33 ++++++++++-------
.../desiredsize/index.md | 24 +++++++------
.../enqueue/index.md | 35 ++++++++++++-------
.../error/index.md | 32 ++++++++++-------
.../readablestreamdefaultcontroller/index.md | 27 +++++++++-----
5 files changed, 95 insertions(+), 56 deletions(-)
diff --git a/files/ja/web/api/readablestreamdefaultcontroller/close/index.md b/files/ja/web/api/readablestreamdefaultcontroller/close/index.md
index 75d17138e39cb5..7bd32c470b61ce 100644
--- a/files/ja/web/api/readablestreamdefaultcontroller/close/index.md
+++ b/files/ja/web/api/readablestreamdefaultcontroller/close/index.md
@@ -1,31 +1,34 @@
---
-title: ReadableStreamDefaultController.close()
+title: "ReadableStreamDefaultController: close() メソッド"
+short-title: close()
slug: Web/API/ReadableStreamDefaultController/close
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultController")}} インターフェイスの **`close()`** メソッドは、関連するストリームを閉じます。
+**`close()`** は {{domxref("ReadableStreamDefaultController")}} インターフェイスのメソッドで、関連するストリームを閉じます。
-リーダーは、以前にキューに入れられたチャンクをストリームから読み取ることができますが、それらを読み取とってしまうとストリームは閉じられます。 ストリームを完全に取り除き、キューに入れられたチャンクを破棄する場合は、{{domxref("ReadableStream.cancel()")}} または {{domxref("ReadableStreamDefaultReader.cancel()")}} を使用します。
+リーダーは、以前にキューに入れられたチャンクをストリームから読み取ることができますが、それらを読み取とってしまうとストリームは閉じられます。 ストリームを完全に取り除き、キューに入れられたチャンクを破棄する場合は、{{domxref("ReadableStream.cancel()")}} または {{domxref("ReadableStreamDefaultReader.cancel()")}} を使用してください。
## 構文
-```
-readableStreamDefaultController.close();
+```js-nolint
+close()
```
-### パラメーター
+### 引数
なし。
-### 戻り値
+### 返値
-`undefined`。
+なし ({{jsxref("undefined")}})。
### 例外
-- TypeError
+- {{jsxref("TypeError")}}
- : ソースオブジェクトは `ReadableStreamDefaultController` ではありません。
## 例
@@ -35,6 +38,7 @@ readableStreamDefaultController.close();
ボタンが押されると、生成を停止し、{{domxref("ReadableStreamDefaultController.close()")}} を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。
```js
+let interval;
const stream = new ReadableStream({
start(controller) {
interval = setInterval(() => {
@@ -49,7 +53,7 @@ const stream = new ReadableStream({
list1.appendChild(listItem);
}, 1000);
- button.addEventListener("click", function () {
+ button.addEventListener("click", () => {
clearInterval(interval);
fetchStream();
controller.close();
@@ -66,10 +70,15 @@ const stream = new ReadableStream({
});
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultController.close")}}
+{{Compat}}
+
+## 関連情報
+
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStreamDefaultController")}}
diff --git a/files/ja/web/api/readablestreamdefaultcontroller/desiredsize/index.md b/files/ja/web/api/readablestreamdefaultcontroller/desiredsize/index.md
index 2f826a8a30ed9e..f189ee2c3f101f 100644
--- a/files/ja/web/api/readablestreamdefaultcontroller/desiredsize/index.md
+++ b/files/ja/web/api/readablestreamdefaultcontroller/desiredsize/index.md
@@ -1,17 +1,14 @@
---
-title: ReadableStreamDefaultController.desiredSize
+title: "ReadableStreamDefaultController: desiredSize プロパティ"
+short-title: desiredSize
slug: Web/API/ReadableStreamDefaultController/desiredSize
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultController")}} インターフェイスの **`desiredSize`** 読み取り専用プロパティは、ストリームの内部キューを満たすために必要な希望サイズを返します。
-
-## 構文
-
-```
-var desiredSize = readableStreamDefaultController.desiredSize;
-```
+**`desiredSize`** は {{domxref("ReadableStreamDefaultController")}} インターフェイスの読み取り専用プロパティで、ストリームの内部キューを満たすために必要な希望サイズを返します。
### 値
@@ -19,12 +16,17 @@ var desiredSize = readableStreamDefaultController.desiredSize;
## 例
-仕様にある[基になるプッシュソースとバックプレッシャーサポートのある読み取り可能なストリーム](https://streams.spec.whatwg.org/#example-rs-push-backpressure)の例は、`desiredSize` を使用してストリームがいっぱいになったことを手動で検出し、バックプレッシャーを適用する良い例を示しています。 また、{{domxref("ReadablestreamDefaultController.error()")}} を使用して、依存しているシステムの別の部分に障害が発生した場合に手動でストリームのエラーをトリガーします。
+仕様にある[基になるプッシュソースと背圧サポートのある読み取り可能なストリーム](https://streams.spec.whatwg.org/#example-rs-push-backpressure)の例は、`desiredSize` を使用してストリームがいっぱいになったことを手動で検出し、背圧を適用する良い例を示しています。 また、{{domxref("ReadablestreamDefaultController.error()")}} を使用して、依存しているシステムの別の部分に障害が発生した場合に手動でストリームのエラーをトリガーします。
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultController.desiredSize")}}
+{{Compat}}
+
+## 関連情報
+
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStreamDefaultController")}}
diff --git a/files/ja/web/api/readablestreamdefaultcontroller/enqueue/index.md b/files/ja/web/api/readablestreamdefaultcontroller/enqueue/index.md
index 132cfa1ab5d3f5..dc6879a9f8067d 100644
--- a/files/ja/web/api/readablestreamdefaultcontroller/enqueue/index.md
+++ b/files/ja/web/api/readablestreamdefaultcontroller/enqueue/index.md
@@ -1,31 +1,34 @@
---
-title: ReadableStreamDefaultController.enqueue()
+title: "ReadableStreamDefaultController: enqueue() メソッド"
+short-title: enqueue()
slug: Web/API/ReadableStreamDefaultController/enqueue
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultController")}} インターフェイスの **`enqueue()`** メソッドは、所与のチャンクを関連するストリームのキューに入れます。
+**`enqueue()`** は {{domxref("ReadableStreamDefaultController")}} インターフェイスのメソッドで、受け取ったのチャンクを関連するストリームのキューに入れます。
## 構文
-```
-readableStreamDefaultController.enqueue(chunk);
+```js-nolint
+enqueue(chunk)
```
-### パラメーター
+### 引数
-- _chunk_
+- `chunk`
- : キューに入れるチャンク。
-### 戻り値
+### 返値
-`undefined`。
+なし ({{jsxref("undefined")}})。
### 例外
-- TypeError
- - : ソースオブジェクトは `ReadableStreamDefaultController` ではありません。
+- {{jsxref("TypeError")}}
+ - : ソースオブジェクトが `ReadableStreamDefaultController` ではありません。
## 例
@@ -34,6 +37,7 @@ readableStreamDefaultController.enqueue(chunk);
ボタンが押されると、生成を停止し、{{domxref("ReadableStreamDefaultController.close()")}} を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。
```js
+let interval;
const stream = new ReadableStream({
start(controller) {
interval = setInterval(() => {
@@ -48,7 +52,7 @@ const stream = new ReadableStream({
list1.appendChild(listItem);
}, 1000);
- button.addEventListener("click", function () {
+ button.addEventListener("click", () => {
clearInterval(interval);
fetchStream();
controller.close();
@@ -65,10 +69,15 @@ const stream = new ReadableStream({
});
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultController.enqueue")}}
+{{Compat}}
+
+## 関連情報
+
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStreamDefaultController")}}
diff --git a/files/ja/web/api/readablestreamdefaultcontroller/error/index.md b/files/ja/web/api/readablestreamdefaultcontroller/error/index.md
index f7815b35bf79b9..31c0b7695442b0 100644
--- a/files/ja/web/api/readablestreamdefaultcontroller/error/index.md
+++ b/files/ja/web/api/readablestreamdefaultcontroller/error/index.md
@@ -1,42 +1,50 @@
---
-title: ReadableStreamDefaultController.error()
+title: "ReadableStreamDefaultController: error() メソッド"
+short-title: error()
slug: Web/API/ReadableStreamDefaultController/error
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultController")}} インターフェイスの **`error()`** メソッドにより、関連するストリームとの今後のやり取りがエラーになります。
+**`error()`** は {{domxref("ReadableStreamDefaultController")}} インターフェイスのメソッドで、関連づけられたストリームとの今後のやり取りをエラーにします。
> **メモ:** `error()` メソッドは複数回呼び出すことができ、ストリームが読み取り可能でないときに呼び出すことができます。
## 構文
-```
-readableStreamDefaultController.error(e);
+```js-nolint
+error(e)
```
-### パラメーター
+### 引数
-- _e_
+- `e`
- : 今後のやり取りを失敗させるエラー。
-### 戻り値
+### 返値
-`undefined`。
+なし ({{jsxref("undefined")}})。
### 例外
-- TypeError
+- {{jsxref("TypeError")}}
- : ソースオブジェクトが `ReadableStreamDefaultController` ではないか、何らかの理由でストリームが読み取り可能ではありません。
## 例
-仕様にある[基になるプッシュソースとバックプレッシャーサポートのある読み取り可能なストリーム](https://streams.spec.whatwg.org/#example-rs-push-backpressure)の例は、{{domxref("ReadablestreamDefaultController.desiredSize")}} を使用してストリームがいっぱいになったことを手動で検出し、バックプレッシャーを適用しています。 また、`error()` を使用して、依存しているシステムの別の部分に障害が発生した場合に手動でストリームのエラーをトリガーする良い例を示しています。
+仕様にある[基になるプッシュソースと背圧サポートのある読み取り可能なストリーム](https://streams.spec.whatwg.org/#example-rs-push-backpressure)の例は、{{domxref("ReadablestreamDefaultController.desiredSize")}} を使用してストリームがいっぱいになったことを手動で検出し、背圧を適用しています。 また、`error()` を使用して、依存しているシステムの別の部分に障害が発生した場合に手動でストリームのエラーをトリガーする良い例を示しています。
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultController.error")}}
+{{Compat}}
+
+## 関連情報
+
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStreamDefaultController")}}
diff --git a/files/ja/web/api/readablestreamdefaultcontroller/index.md b/files/ja/web/api/readablestreamdefaultcontroller/index.md
index d91836fdff2fd3..d8ba7636f04662 100644
--- a/files/ja/web/api/readablestreamdefaultcontroller/index.md
+++ b/files/ja/web/api/readablestreamdefaultcontroller/index.md
@@ -1,22 +1,24 @@
---
title: ReadableStreamDefaultController
slug: Web/API/ReadableStreamDefaultController
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-[Streams API](/ja/docs/Web/API/Streams_API) の **`ReadableStreamDefaultController`** インターフェイスは、{{domxref("ReadableStream")}} の状態と内部キューを制御できるコントローラーを表します。 デフォルトのコントローラーは、バイトストリームではないストリーム用です。
+**`ReadableStreamDefaultController`** は[ストリーム API](/ja/docs/Web/API/Streams_API) のインターフェイスで、{{domxref("ReadableStream")}} の状態と内部キューを制御できるコントローラーを表します。既定のコントローラーは、バイトストリームではないストリーム用のものです。
## コンストラクター
なし。 `ReadableStreamDefaultController` インスタンスは、`ReadableStream` の構築中に自動的に作成されます。
-## プロパティ
+## インスタンスプロパティ
- {{domxref("ReadableStreamDefaultController.desiredSize")}} {{readonlyInline}}
- : ストリームの内部キューを満たすために必要な希望サイズを返します。
-## メソッド
+## インスタンスメソッド
- {{domxref("ReadableStreamDefaultController.close()")}}
- : 関連するストリームを閉じます。
@@ -29,11 +31,12 @@ slug: Web/API/ReadableStreamDefaultController
次の単純な例では、コンストラクターを使用してカスタムの `ReadableStream` を作成します(完全なコードについては、[単純なランダムストリームの例](https://mdn.github.io/dom-examples/streams/simple-random-stream/)を参照)。 `start()` 関数は、1 秒ごとにテキストのランダムな文字列を生成し、それをストリームのキューに入れます。 {{domxref("ReadableStream.cancel()")}} が何らかの理由で呼び出された場合、生成を停止するための `cancel()` 関数も提供します。
-{{domxref("ReadableStreamDefaultController")}} オブジェクトは、`start()` 関数および `pull()` 関数のパラメーターとして提供されることに注意してください。
+{{domxref("ReadableStreamDefaultController")}} オブジェクトは、 `start()` 関数および `pull()` 関数の引数として提供されることに注意してください。
-ボタンが押されると、生成を停止し、{{domxref("ReadableStreamDefaultController.close()")}} を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。
+ボタンが押されると、生成を停止し、 {{domxref("ReadableStreamDefaultController.close()")}} を使用してストリームを閉じ、ストリームからデータを読み取る別の関数を実行します。
```js
+let interval;
const stream = new ReadableStream({
start(controller) {
interval = setInterval(() => {
@@ -48,7 +51,7 @@ const stream = new ReadableStream({
list1.appendChild(listItem);
}, 1000);
- button.addEventListener("click", function () {
+ button.addEventListener("click", () => {
clearInterval(interval);
fetchStream();
controller.close();
@@ -65,10 +68,18 @@ const stream = new ReadableStream({
});
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultController")}}
+{{Compat}}
+
+## 関連情報
+
+- [ストリーム API の概念](/ja/docs/Web/API/Streams_API)
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStream")}}
+- [WHATWG Stream Visualizer](https://whatwg-stream-visualizer.glitch.me/), for a basic visualization of readable, writable, and transform streams.
+- [Web-streams-polyfill](https://github.com/MattiasBuelens/web-streams-polyfill) or [sd-streams](https://github.com/stardazed/sd-streams) - polyfills
From 2d3afd5e4423fe4e5d839a774b1e307d11b477b7 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 11:19:45 +0900
Subject: [PATCH 005/331] =?UTF-8?q?2023/05/10=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cancel/index.md | 47 +++++++++--------
.../closed/index.md | 28 +++++-----
.../api/readablestreamdefaultreader/index.md | 33 ++++++++----
.../readablestreamdefaultreader/read/index.md | 51 ++++++++++---------
.../readablestreamdefaultreader/index.md | 42 ++++++++-------
.../releaselock/index.md | 36 ++++++++-----
6 files changed, 139 insertions(+), 98 deletions(-)
diff --git a/files/ja/web/api/readablestreamdefaultreader/cancel/index.md b/files/ja/web/api/readablestreamdefaultreader/cancel/index.md
index dca4d4581c3a3b..54996c04ece3f2 100644
--- a/files/ja/web/api/readablestreamdefaultreader/cancel/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/cancel/index.md
@@ -1,34 +1,38 @@
---
-title: ReadableStreamDefaultReader.cancel()
+title: "ReadableStreamDefaultReader: cancel() メソッド"
+short-title: cancel()
slug: Web/API/ReadableStreamDefaultReader/cancel
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultReader")}} インターフェイスの **`cancel()`** メソッドはストリームをキャンセルし、コンシューマーがストリームに興味を失ったことを通知します。 提供された reason 引数は、基になるソースに与えられ、使用する場合もしない場合もあります。
+**`cancel()`** は {{domxref("ReadableStreamDefaultReader")}} インターフェイスのメソッドで、ストリームをキャンセルし、コンシューマーがストリームに興味を失ったことを通知します。 提供された reason 引数は、基になるソースに与えられ、使用する場合もしない場合もあります。
-キャンセルは、ストリームを完全に終了し、読み取り待ちのチャンクがキューに入っている場合でも、それ以上データを必要としない場合に使用します。 キャンセルが呼び出された後、そのデータは失われ、ストリームは読み取り不能になります。 これらのチャンクをまだ読み取り、ストリームを完全に取り除くわけではない場合は、{{domxref("ReadableStreamDefaultController.close()")}} を使用します。
+キャンセルは、ストリームを完全に終了し、読み取り待ちのチャンクがキューに入っている場合でも、それ以上データを必要としない場合に使用します。 キャンセルが呼び出された後、そのデータは失われ、ストリームは読み取り不能になります。 これらのチャンクをまだ読み取り、ストリームを完全に取り除くわけではない場合は、 {{domxref("ReadableStreamDefaultController.close()")}} を使用します。
-> **メモ:** リーダーがアクティブな場合、`cancel()` メソッドは、関連付けられたストリームの場合({{domxref("ReadableStream.cancel()")}})と同じように振る舞います。
+> **メモ:** リーダーがアクティブな場合、`cancel()` メソッドは、関連付けられたストリームの場合 ({{domxref("ReadableStream.cancel()")}}) と同じように振る舞います。
## 構文
-```
-var promise = readableStreamDefaultReader.cancel(reason);
+```js-nolint
+cancel()
+cancel(reason)
```
-### パラメーター
+### 引数
-- reason {{optional_inline}}
- - : 人間が読むことができるキャンセルの理由を提供する {{domxref("DOMString")}}。
+- `reason` {{optional_inline}}
+ - : 人間が読むことができるキャンセルの理由です。この値は使われたり使われなかったりします。
-### 戻り値
+### 返値
-{{jsxref("Promise")}}。 `reason` パラメーターで指定された値で満たされます。
+{{jsxref("Promise")}} です。 `reason` 引数で指定された値で履行されます。
-### Exceptions
+### 例外
-- TypeError
+- {{jsxref("TypeError")}}
- : ソースオブジェクトが `ReadableStreamDefaultReader` ではないか、ストリームに所有者がいません。
## 例
@@ -45,7 +49,7 @@ function fetchStream() {
// read() は、値を受け取ったときに解決する promise を返します
reader.read().then(function processText({ done, value }) {
// 結果オブジェクトには2つのプロパティが含まれます
- // done - ストリームがすべてのデータを既に提供している場合は true
+ // done - ストリームがすべてのデータを既に提供している場合は true
// value - 一部のデータ。 done が true の場合、常に undefined
if (done) {
console.log("Stream complete");
@@ -58,11 +62,7 @@ function fetchStream() {
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
- listItem.textContent =
- "Received " +
- charsReceived +
- " characters so far. Current chunk = " +
- chunk;
+ listItem.textContent = `Received ${charsReceived} characters so far. Current chunk = ${chunk}`;
list2.appendChild(listItem);
result += chunk;
@@ -73,10 +73,15 @@ function fetchStream() {
}
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader.cancel")}}
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("ReadableStreamDefaultReader.ReadableStreamDefaultReader", "ReadableStreamDefaultReader()")}} コンストラクター
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
diff --git a/files/ja/web/api/readablestreamdefaultreader/closed/index.md b/files/ja/web/api/readablestreamdefaultreader/closed/index.md
index 20c532a57a0b3d..82cfe0258ff587 100644
--- a/files/ja/web/api/readablestreamdefaultreader/closed/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/closed/index.md
@@ -1,25 +1,22 @@
---
-title: ReadableStreamDefaultReader.closed
+title: "ReadableStreamDefaultReader: closed プロパティ"
+short-title: closed
slug: Web/API/ReadableStreamDefaultReader/closed
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultReader")}} インターフェイスの **`closed`** 読み取り専用プロパティは、ストリームが閉じられた場合、またはリーダーのロックが解除された場合に満たし、ストリームがエラーの場合に拒否する promise を返します。
+**`closed`** は {{domxref("ReadableStreamDefaultReader")}} インターフェイスの読み取り専用プロパティで、ストリームが閉じられた場合、またはリーダーのロックが解除された場合に履行され、ストリームがエラーの場合に拒否されるプロミス ({{jsxref("Promise")}}) を返します。このプロパティを使用すると、ストリーミング処理の終わりに応答するコードを書くことができます。
-## 構文
+## 値
-```
-var closed = readableStreamDefaultReader.closed;
-```
-
-### 値
-
-{{jsxref("Promise")}}。
+{{jsxref("Promise")}} です。
## 例
-このスニペットでは、以前に作成したリーダーに問い合わせて、ストリームが閉じられているかどうかを確認します。 閉じられると、promise が満たされ、メッセージをコンソールに記録します。
+このスニペットでは、以前に作成したリーダーに問い合わせて、ストリームが閉じられているかどうかを確認します。 閉じられるとプロミスが履行され、メッセージをコンソールに出力します。
```js
reader.closed.then(() => {
@@ -27,10 +24,15 @@ reader.closed.then(() => {
});
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader.closed")}}
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("ReadableStreamDefaultReader.ReadableStreamDefaultReader", "ReadableStreamDefaultReader()")}} コンストラクター
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
diff --git a/files/ja/web/api/readablestreamdefaultreader/index.md b/files/ja/web/api/readablestreamdefaultreader/index.md
index b928b379fd05e3..27294585235670 100644
--- a/files/ja/web/api/readablestreamdefaultreader/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/index.md
@@ -1,28 +1,35 @@
---
title: ReadableStreamDefaultReader
slug: Web/API/ReadableStreamDefaultReader
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-[Streams API](/ja/docs/Web/API/Streams_API) の **`ReadableStreamDefaultReader`** インターフェイスは、ネットワークから提供されたストリームデータ(フェッチ要求など)を読み取るために使用できるデフォルトのリーダーを表します。
+**`ReadableStreamDefaultReader`** は[ストリーム API](/ja/docs/Web/API/Streams_API) のインターフェイスで、ネットワークから提供されたストリームデータ(フェッチリクエストなど)を読み取るために使用できる既定のリーダーを表します。
+
+`ReadableStreamDefaultReader` は、任意の種類の基盤ソースを持つ {{domxref("ReadableStream")}} からの読み取りに使用することができます(基盤バイトソースを持つ読み取り可能なストリームにのみ使用することができる {{domxref("ReadableStreamBYOBReader")}} とは異なります)。
+
+ただし、基盤ソースからのゼロコピー移譲は、バッファーを自動割り当てするバイトソースにのみ対応していることに注意してください。
+言い換えれば、ストリームは[構築時](/ja/docs/Web/API/ReadableStream/ReadableStream)に、[`type="bytes"`](/ja/docs/Web/API/ReadableStream/ReadableStream#type) と [`autoAllocateChunkSize`](/ja/docs/Web/API/ReadableStream/ReadableStream#autoallocatechunksize) の両方が指定されたものでなければなりません。他にも基盤ソースがある場合、ストリームは常に内部キューからのデータで読み取りリクエストを満たします。
## コンストラクター
- {{domxref("ReadableStreamDefaultReader.ReadableStreamDefaultReader", "ReadableStreamDefaultReader()")}}
- : `ReadableStreamDefaultReader` オブジェクトのインスタンスを作成して返します。
-## プロパティ
+## インスタンスプロパティ
-- {{domxref("ReadableStreamDefaultReader.closed")}} {{readonlyInline}}
- - : ストリーミングプロセスの終了に応答するコードを記述できます。 ストリームが閉じられた場合、またはリーダーのロックが解除された場合に満たされる promise を返します。 ストリームがエラーの場合は拒否します。
+- {{domxref("ReadableStreamDefaultReader.closed")}} {{ReadOnlyInline}}
+ - : ストリーミングプロセスの終了に応答するコードを記述できます。 ストリームが閉じられた場合、またはリーダーのロックが解除された場合に履行されるプロミスを返します。 ストリームがエラーの場合は拒否されます。
-## メソッド
+## インスタンスメソッド
- {{domxref("ReadableStreamDefaultReader.cancel()")}}
- - : ストリームをキャンセルし、コンシューマーがストリームに興味を失ったことを通知します。 提供された reason 引数は、基になるソースに与えられ、使用する場合もしない場合もあります。
+ - : ストリームをキャンセルし、コンシューマーがストリームに興味を失ったことを通知します。 提供された引数 `reason` は、基盤ソースに与えられ、使用する場合もしない場合もあります。
- {{domxref("ReadableStreamDefaultReader.read()")}}
- - : ストリームの内部キュー内の次のチャンクへのアクセスを提供する promise を返します。
+ - : ストリームの内部キュー内の次のチャンクへのアクセスを提供するプロミスを返します。
- {{domxref("ReadableStreamDefaultReader.releaseLock()")}}
- : ストリームのリーダーのロックを解除します。
@@ -62,10 +69,18 @@ fetch("https://www.example.org/").then((response) => {
});
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader")}}
+{{Compat}}
+
+## 関r根情報
+
+- [ストリーム API の概念](/ja/docs/Web/API/Streams_API)
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStream")}}
+- [WHATWG Stream Visualizer](https://whatwg-stream-visualizer.glitch.me/), for a basic visualization of readable, writable, and transform streams.
+- [Web-streams-polyfill](https://github.com/MattiasBuelens/web-streams-polyfill) or [sd-streams](https://github.com/stardazed/sd-streams) - polyfills
diff --git a/files/ja/web/api/readablestreamdefaultreader/read/index.md b/files/ja/web/api/readablestreamdefaultreader/read/index.md
index 9a3a7b43ee738b..6e774d32fea895 100644
--- a/files/ja/web/api/readablestreamdefaultreader/read/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/read/index.md
@@ -1,33 +1,37 @@
---
-title: ReadableStreamDefaultReader.read()
+title: "ReadableStreamDefaultReader: read() メソッド"
+short-title: read()
slug: Web/API/ReadableStreamDefaultReader/read
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultReader")}} インターフェイスの **`read()`** メソッドは、ストリームの内部キュー内の次のチャンクへのアクセスを提供する promise を返します。
+**`read()`** は {{domxref("ReadableStreamDefaultReader")}} インターフェイスのメソッドで、ストリームの内部キュー内の次のチャンクへのアクセスを提供するプロミスを返します。
## 構文
-```
-var promise = readableStreamDefaultReader.read();
+```js-nolint
+read()
```
-### パラメーター
+### 引数
なし。
-### 戻り値
+### 返値
-{{jsxref("Promise")}}。ストリームの状態に応じて結果を充足/拒否します。 異なる可能性は次のとおりです。
+{{jsxref("Promise")}} です。ストリームの状態に応じて、結果にて履行または拒否されます。
+ありうる状況ものは次の通りです。
-- チャンクが使用可能な場合、`{ value: theChunk, done: false }` の形式のオブジェクトで promise が満たされます。
-- ストリームが閉じられると、`{ value: undefined, done: true }` という形式のオブジェクトで promise が満たされます。
-- ストリームがエラーになると、関連するエラーで promise が拒否されます。
+- チャンクが使用可能な場合、プロミスが `{ value: theChunk, done: false }` の形式のオブジェクトで履行されます。
+- ストリームが閉じられると、プロミスが `{ value: undefined, done: true }` という形式のオブジェクトで履行されます。
+- ストリームがエラーになると、プロミスが関連するエラーでプロミスが拒否されます。
### 例外
-- TypeError
+- {{jsxref("TypeError")}}
- : ソースオブジェクトが `ReadableStreamDefaultReader` ではないか、ストリームに所有者がいません。
## 例
@@ -46,7 +50,7 @@ function fetchStream() {
// read() は、値を受け取ったときに解決する promise を返します
reader.read().then(function processText({ done, value }) {
// 結果オブジェクトには2つのプロパティが含まれます
- // done - ストリームがすべてのデータを既に提供している場合は true
+ // done - ストリームがすべてのデータを既に提供している場合は true
// value - 一部のデータ。 done が true の場合、常に undefined
if (done) {
console.log("Stream complete");
@@ -58,11 +62,7 @@ function fetchStream() {
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
- listItem.textContent =
- "Received " +
- charsReceived +
- " characters so far. Current chunk = " +
- chunk;
+ listItem.textContent = `Received ${charsReceived} characters so far. Current chunk = ${chunk}`;
list2.appendChild(listItem);
result += chunk;
@@ -83,11 +83,10 @@ async function* makeTextFileLineIterator(fileURL) {
let response = await fetch(fileURL);
let reader = response.body.getReader();
let { value: chunk, done: readerDone } = await reader.read();
- chunk = chunk ? utf8Decoder.decode(chunk) : "";
+ chunk = chunk ? utf8Decoder.decode(chunk, { stream: true }) : "";
- let re = /\n|\r|\r\n/gm;
+ let re = /\r\n|\n|\r/gm;
let startIndex = 0;
- let result;
for (;;) {
let result = re.exec(chunk);
@@ -97,7 +96,8 @@ async function* makeTextFileLineIterator(fileURL) {
}
let remainder = chunk.substr(startIndex);
({ value: chunk, done: readerDone } = await reader.read());
- chunk = remainder + (chunk ? utf8Decoder.decode(chunk) : "");
+ chunk =
+ remainder + (chunk ? utf8Decoder.decode(chunk, { stream: true }) : "");
startIndex = re.lastIndex = 0;
continue;
}
@@ -115,10 +115,15 @@ for await (let line of makeTextFileLineIterator(urlOfFile)) {
}
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader.read")}}
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("ReadableStreamDefaultReader.ReadableStreamDefaultReader", "ReadableStreamDefaultReader()")}} コンストラクター
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
diff --git a/files/ja/web/api/readablestreamdefaultreader/readablestreamdefaultreader/index.md b/files/ja/web/api/readablestreamdefaultreader/readablestreamdefaultreader/index.md
index a4a8bd8c2aac07..edbc164d02d9e8 100644
--- a/files/ja/web/api/readablestreamdefaultreader/readablestreamdefaultreader/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/readablestreamdefaultreader/index.md
@@ -1,33 +1,36 @@
---
-title: ReadableStreamDefaultReader.ReadableStreamDefaultReader()
+title: "ReadableStreamDefaultReader: ReadableStreamDefaultReader() コンストラクター"
+short-title: ReadableStreamDefaultReader()
slug: Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
**`ReadableStreamDefaultReader()`** コンストラクターは、`ReadableStreamDefaultReader` オブジェクトのインスタンスを作成して返します。
-> **メモ:** 通常、このコンストラクターを手動で使用することはありません。 代わりに、{{domxref("ReadableStream.getReader()")}}) メソッドを使用します。
+> **メモ:** 通常、このコンストラクターを手動で使用することはありません。 代わりに、{{domxref("ReadableStream.getReader()")}} メソッドを使用してください。
## 構文
-```
-var readableStreamDefaultReader = new ReadableStreamDefaultReader(stream);
+```js-nolint
+new ReadableStreamDefaultReader(stream)
```
-### パラメーター
+### 引数
-- stream
- - : 読み取られる {{domxref("ReadableStream")}}。
+- `stream`
+ - : 読み取り対象となる {{domxref("ReadableStream")}}。
-### 戻り値
+### 返値
{{domxref("ReadableStreamDefaultReader")}} オブジェクトのインスタンス。
### 例外
-- TypeError
- - : 指定された `stream` パラメーターは {{domxref("ReadableStream")}} ではないか、別のリーダーによる読み取りのために既にロックされています。
+- {{jsxref("TypeError")}}
+ - : 指定された `stream` 引数が {{domxref("ReadableStream")}} ではないか、別のリーダーによる読み取りのために既にロックされています。
## 例
@@ -41,7 +44,7 @@ function fetchStream() {
// read() は、値を受け取ったときに解決する promise を返します
reader.read().then(function processText({ done, value }) {
// 結果オブジェクトには2つのプロパティが含まれます。
- // done - ストリームがすべてのデータを既に提供している場合は true。
+ // done - ストリームがすべてのデータを既に提供している場合は true。
// value - 一部のデータ。 done が true の場合、常に undefined。
if (done) {
console.log("Stream complete");
@@ -53,11 +56,7 @@ function fetchStream() {
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
- listItem.textContent =
- "Received " +
- charsReceived +
- " characters so far. Current chunk = " +
- chunk;
+ listItem.textContent = `Received ${charsReceived} characters so far. Current chunk = ${chunk}`;
list2.appendChild(listItem);
result += chunk;
@@ -68,10 +67,17 @@ function fetchStream() {
}
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader.ReadableStreamDefaultReader")}}
+{{Compat}}
+
+## 関連情報
+
+- [ストリーム API の概念](/ja/docs/Web/API/Streams_API)
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
+- {{domxref("ReadableStream")}}
+- {{domxref("ReadableStreamDefaultController")}}
diff --git a/files/ja/web/api/readablestreamdefaultreader/releaselock/index.md b/files/ja/web/api/readablestreamdefaultreader/releaselock/index.md
index dbb57b3103f0d8..b3d27ceaac6d9b 100644
--- a/files/ja/web/api/readablestreamdefaultreader/releaselock/index.md
+++ b/files/ja/web/api/readablestreamdefaultreader/releaselock/index.md
@@ -1,33 +1,36 @@
---
-title: ReadableStreamDefaultReader.releaseLock()
+title: "ReadableStreamDefaultReader: releaseLock() メソッド"
+short-title: releaseLock()
slug: Web/API/ReadableStreamDefaultReader/releaseLock
+l10n:
+ sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
-{{domxref("ReadableStreamDefaultReader")}} インターフェイスの `releaseLock()` メソッドは、ストリームのリーダーのロックを解除します。
+**`releaseLock()`** は {{domxref("ReadableStreamDefaultReader")}} インターフェイスのメソッドで、ストリームのリーダーのロックを解除します。
ロックを解除したときに関連するストリームにエラーが発生した場合、リーダーはその後同様にエラーが発生したようになります。 そうでない場合、リーダーは閉じた状態になります。
-リーダーのロックは、保留中の読み取り要求が残っている間、つまり、リーダーの {{domxref("ReadableStreamDefaultReader.read()")}} メソッドによって返された promise が終了していない場合、解除できません。 これにより、`TypeError` がスローされます。
+リーダーのロックは、保留中の読み取りリクエストが残っている間、つまり、リーダーの {{domxref("ReadableStreamDefaultReader.read()")}} メソッドによって返されたプロミスが終了していない場合、解除できません。 これにより、`TypeError` が発生します。
## 構文
-```
-readableStreamDefaultReader.releaseLock();
+```js-nolint
+releaseLock()
```
-### パラメーター
+### 引数
なし。
-### Return value
+### 返値
-`undefined`。
+なし ({{jsxref("undefined")}})。
### 例外
-- TypeError
+- {{jsxref("TypeError")}}
- : ソースオブジェクトが `ReadableStreamDefaultReader` でないか、読み取り要求が保留中です。
## 例
@@ -36,18 +39,23 @@ readableStreamDefaultReader.releaseLock();
function fetchStream() {
const reader = stream.getReader();
- ...
+ // ...
- reader.releaseLock()
+ reader.releaseLock();
- ...
+ // ...
}
```
-## 仕様
+## 仕様書
{{Specifications}}
## ブラウザーの互換性
-{{Compat("api.ReadableStreamDefaultReader.releaseLock")}}
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("ReadableStreamDefaultReader.ReadableStreamDefaultReader", "ReadableStreamDefaultReader()")}} コンストラクター
+- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
From 69ac7fe58c69081545ae41534bbf6804beba90eb Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 28 Sep 2023 09:00:11 +0900
Subject: [PATCH 006/331] =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=AA=E3=83=BC?=
=?UTF-8?q?=E3=83=A0=20API=20=E3=81=AE=E7=94=A8=E8=AA=9E=E3=81=AE=E4=BF=AE?=
=?UTF-8?q?=E6=AD=A3=EF=BC=8F=E8=AA=A4=E8=A8=B3=E3=81=AE=E4=BF=AE=E6=AD=A3?=
=?UTF-8?q?=20(#16050)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* 2023/08/11 時点の英語版に同期
* 2023/07/18 時点の英語版に同期
* 2023/08/25 時点の英語版に同期
* 2023/07/07 時点の英語版に基づき新規翻訳
* 2023/07/07 時点の英語版に同期
---
.../streams_api/using_readable_byte_streams/index.md | 6 +++---
.../api/streams_api/using_readable_streams/index.md | 12 ++++++------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/files/ja/web/api/streams_api/using_readable_byte_streams/index.md b/files/ja/web/api/streams_api/using_readable_byte_streams/index.md
index 84b9cc4491e183..3f87526a4593c0 100644
--- a/files/ja/web/api/streams_api/using_readable_byte_streams/index.md
+++ b/files/ja/web/api/streams_api/using_readable_byte_streams/index.md
@@ -8,7 +8,7 @@ l10n:
{{DefaultAPISidebar("Streams")}}
読み取り可能なバイトストリームとは、[読み取り可能なストリーム](/ja/docs/Web/API/Streams_API/Using_readable_streams)のうち `type: "bytes"` の基盤バイトソースがあり、(ストリーム内部のキューをバイパスして)基盤ソースからコンシューマーへの効率的なゼロコピー移譲に対応しています。
-これは、データが任意の大きさの、潜在的にとても大きな塊で供給されたりリクエストされたりする可能性があり、したがってコピーを避けることが効率を向上させる可能性がある使用される用途を意図しています。
+これは、データが任意の大きさの、潜在的にとても大きなチャンクで供給されたりリクエストされたりする可能性があり、したがってコピーを避けることが効率を向上させる可能性がある使用される用途を意図しています。
この記事では、読み取り可能なバイトストリームと通常の「既定」ストリームとの比較、およびそれらをどのように作成し、使用するかについて説明します。
@@ -383,7 +383,7 @@ button.addEventListener("click", () => {
{{domxref("ReadableStreamBYOBReader.releaseLock()")}} を使用すると、ストリームを取り消すことなくリーダーを解放することができます。
ただし、未処理の読み込みリクエストは即座に拒否されることに注意してください。
-残りの塊を読むために、後で新しいリーダーを取得することができます。
+残りのチャンクを読むために、後で新しいリーダーを取得することができます。
#### ストリームの close/error を監視
@@ -888,7 +888,7 @@ button.addEventListener("click", () => {
基盤のバイトプルソース(左)とコンシューマ(右)からのログ出力を下記に示します。
-これで、基盤のバイトソースを指定しますと、塊は200バイト幅になることに注意してください。
+なお、チャンクは基盤バイトソースで指定されているように、 200 バイト長になります。
これらは、ゼロコピー移譲として行われます。
{{EmbedLiveSample("Underlying pull source with default reader","100%","500px")}}
diff --git a/files/ja/web/api/streams_api/using_readable_streams/index.md b/files/ja/web/api/streams_api/using_readable_streams/index.md
index ebbd4bb530878c..c631e352493da6 100644
--- a/files/ja/web/api/streams_api/using_readable_streams/index.md
+++ b/files/ja/web/api/streams_api/using_readable_streams/index.md
@@ -151,10 +151,10 @@ fetch("http://example.com/somefile.txt")
// read() は値を受け取ったときに解決するプロミスを返す
reader.read().then(function pump({ done, value }) {
if (done) {
- // データの最後の塊で何かを行い、リーダーを終了する
+ // データの最後のチャンクで何かを行い、リーダーを終了する
return;
}
- // そうでない場合は、ここで現在の塊を処理する
+ // そうでない場合は、ここで現在のチャンクを処理する
// さらに読み進めて、この関数をもう一度呼び出す
return reader.read().then(pump);
@@ -174,10 +174,10 @@ async function readData(url) {
while (true) {
const { done, value } = await reader.read();
if (done) {
- // データの最後の塊で何かを行い、リーダーを終了する
+ // データの最後のチャンクで何かを行い、リーダーを終了する
return;
}
- // そうでない場合は、ここで現在の塊を処理する
+ // そうでない場合は、ここで現在のチャンクを処理する
}
}
```
@@ -414,9 +414,9 @@ async function logChunks(url, { signal }) {
```
下記のログ出力例では、コードが実行されているか、ブラウザーが `ReadableStream` の非同期反復処理に対応していないことを表示しています。
-正しい辺には取得した塊が表示されます。フェッチを停止するにはキャンセルボタンを押します。
+正しい辺には取得したチャンクが表示されます。フェッチを停止するにはキャンセルボタンを押します。
-> **メモ:** このフェッチ処理はデモのために模擬的に作成されたもので、ランダムにテキストの塊を生成する `ReadableStream` を返すだけです。
+> **メモ:** このフェッチ処理はデモのために模擬的に作成されたもので、ランダムにテキストのチャンクを生成する `ReadableStream` を返すだけです。
> 下記左列の「基盤ソース」は模擬ソースで生成されるデータで、右列はコンシューマーからのログ出力です。
> (模擬ソースのコードは例に関係ないので表示しません。)
From 2596b93ecbb6c63ca0ab33f40ac7f226a7952ae7 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 28 Sep 2023 09:00:33 +0900
Subject: [PATCH 007/331] =?UTF-8?q?ReadableByteStreamController=20?=
=?UTF-8?q?=E3=81=AB=E3=81=8A=E3=81=91=E3=82=8B=E7=94=A8=E8=AA=9E=E3=81=AE?=
=?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#16051)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* 2023/05/10 時点の英語版に同期
* 2023/04/08 時点の英語版に同期
* 用語の統一:塊→チャンク
---
files/ja/web/api/readablebytestreamcontroller/enqueue/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/files/ja/web/api/readablebytestreamcontroller/enqueue/index.md b/files/ja/web/api/readablebytestreamcontroller/enqueue/index.md
index 140afde4fae874..232d2db6aeacf9 100644
--- a/files/ja/web/api/readablebytestreamcontroller/enqueue/index.md
+++ b/files/ja/web/api/readablebytestreamcontroller/enqueue/index.md
@@ -8,7 +8,7 @@ l10n:
{{APIRef("Streams")}}
-**`enqueue()`** は {{domxref("ReadableByteStreamController")}} で、指定された塊を、関連する読み取り可能なバイトストリームのキューに入れます(塊はストリーム内部のキューにコピーされます)。
+**`enqueue()`** は {{domxref("ReadableByteStreamController")}} で、指定されたチャンクを、関連する読み取り可能なバイトストリームのキューに入れます(チャンクはストリーム内部のキューにコピーされます)。
これは、 {{domxref("ReadableByteStreamController.byobRequest","byobRequest")}} が `null` である場合にのみ、キューへのデータ移譲に使用しましょう。
From 775bfcf05b361d7d3163729073bb4a8f5c21b885 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 13:09:47 +0900
Subject: [PATCH 008/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/transformstream/index.md | 102 ++++++++++++++--------
1 file changed, 65 insertions(+), 37 deletions(-)
diff --git a/files/ja/web/api/transformstream/index.md b/files/ja/web/api/transformstream/index.md
index 59956b8cad9386..454aa3698a7798 100644
--- a/files/ja/web/api/transformstream/index.md
+++ b/files/ja/web/api/transformstream/index.md
@@ -1,25 +1,35 @@
---
title: TransformStream
slug: Web/API/TransformStream
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
-{{APIRef("Media Capture and Streams")}}
+{{APIRef("Streams")}}
-`TransformStream` は [Streams API](/ja/docs/Web/API/Streams_API) のインターフェイスで一連の変換可能なデータを表します。
+**`TransformStream`** は[ストリーム API](/ja/docs/Web/API/Streams_API) のインターフェイスで、変換ストリームの概念である[パイプチェーン](/ja/docs/Web/API/Streams_API/Concepts#パイプチェーン)の具体的な実装を表します。
+
+これは、データのストリームをある形式から別の形式に変換するために {{domxref("ReadableStream.pipeThrough()")}} メソッドに渡すことができます。
+例えば、動画フレームをデコード(またはエンコード)したり、データを解凍したり、ストリームを XML から JSON に変換したりするために使用します。
+
+変換アルゴリズムは、オブジェクトのコンストラクターのオプション引数として指定されます。
+提供されない場合、ストリームを通してパイプ処理されたデータは変更されません。
+
+`TransformStream` は[移譲可能オブジェクト](/ja/docs/Web/API/Web_Workers_API/Transferable_objects)です。
## コンストラクター
- {{domxref("TransformStream.TransformStream", "TransformStream()")}}
- - : 指定されたハンドラーから変換ストリームを作成して返却します。
+ - : 指定されたハンドラーから変換ストリームを作成して返却します。オプションで、変換オブジェクトとストリームのキューイング戦略を指定します。
-## プロパティ
+## インスタンスプロパティ
-- {{domxref("TransformStream.readable")}} {{readonlyInline}}
- - : TransformStream の `readable` 側の端点です。
-- {{domxref("TransformStream.writable")}} {{readonlyInline}}
- - : TransformStream の `writable` 側の端点です。
+- {{domxref("TransformStream.readable")}} {{ReadOnlyInline}}
+ - : `TransformStream` の `readable` 側の端点です。
+- {{domxref("TransformStream.writable")}} {{ReadOnlyInline}}
+ - : `TransformStream` の `writable` 側の端点です。
-## メソッド
+## インスタンスメソッド
なし
@@ -27,40 +37,55 @@ slug: Web/API/TransformStream
### 何かを uint8array に変換するストリーム
-以下の例では、変換ストリームは受信したすべてのチャンクを {{domxref("Uint8Array")}} の値に渡します。
+以下の例では、変換ストリームは受信したすべてのチャンクを {{jsxref("Uint8Array")}} の値に渡します。
```js
const transformContent = {
start() {}, // required.
async transform(chunk, controller) {
- chunk = await chunk
+ chunk = await chunk;
switch (typeof chunk) {
- case 'object':
+ case "object":
// just say the stream is done I guess
- if (chunk === null) controller.terminate()
- else if (ArrayBuffer.isView(chunk))
- controller.enqueue(new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength))
- else if (Array.isArray(chunk) && chunk.every(value => typeof value === 'number'))
- controller.enqueue(new Uint8Array(chunk))
- else if ('function' === typeof chunk.valueOf && chunk.valueOf() !== chunk)
- this.transform(chunk.valueOf(), controller) // hack
- else if ('toJSON' in chunk) this.transform(JSON.stringify(chunk), controller)
- break
- case 'symbol':
- controller.error("Cannot send a symbol as a chunk part")
- break
- case 'undefined':
- controller.error("Cannot send undefined as a chunk part")
+ if (chunk === null) {
+ controller.terminate();
+ } else if (ArrayBuffer.isView(chunk)) {
+ controller.enqueue(
+ new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength),
+ );
+ } else if (
+ Array.isArray(chunk) &&
+ chunk.every((value) => typeof value === "number")
+ ) {
+ controller.enqueue(new Uint8Array(chunk));
+ } else if (
+ typeof chunk.valueOf === "function" &&
+ chunk.valueOf() !== chunk
+ ) {
+ this.transform(chunk.valueOf(), controller); // hack
+ } else if ("toJSON" in chunk) {
+ this.transform(JSON.stringify(chunk), controller);
+ }
+ break;
+ case "symbol":
+ controller.error("Cannot send a symbol as a chunk part");
+ break;
+ case "undefined":
+ controller.error("Cannot send undefined as a chunk part");
+ break;
default:
- controller.enqueue(this.textencoder.encode(String(chunk)))
- break
+ controller.enqueue(this.textencoder.encode(String(chunk)));
+ break;
+ }
},
- flush() { /* do any destructor work here */ }
-}
+ flush() {
+ /* do any destructor work here */
+ },
+};
class AnyToU8Stream extends TransformStream {
constructor() {
- super({...transformContent, textencoder: new TextEncoder()})
+ super({ ...transformContent, textencoder: new TextEncoder() });
}
}
```
@@ -78,6 +103,7 @@ const tes = {
controller.enqueue(this.encoder.encode(chunk));
},
};
+
let _jstes_wm = new WeakMap(); /* info holder */
class JSTextEncoderStream extends TransformStream {
constructor() {
@@ -92,24 +118,25 @@ class JSTextEncoderStream extends TransformStream {
}
```
-同様に、 TextDecoderStream は次のように書くことができます。
+同様に、 `TextDecoderStream` は次のように書くことができます。
```js
-const tes = {
+const tds = {
start() {
this.decoder = new TextDecoder(this.encoding, this.options);
},
transform(chunk, controller) {
- controller.enqueue(this.decoder.decode(chunk));
+ controller.enqueue(this.decoder.decode(chunk, { stream: true }));
},
};
+
let _jstds_wm = new WeakMap(); /* info holder */
class JSTextDecoderStream extends TransformStream {
constructor(encoding = "utf-8", { ...options } = {}) {
let t = { ...tds, encoding, options };
super(t);
- _jstes_wm.set(this, t);
+ _jstds_wm.set(this, t);
}
get encoding() {
return _jstds_wm.get(this).decoder.encoding;
@@ -148,8 +175,9 @@ responses.reduce(
## ブラウザーの互換性
-{{Compat("api.TransformStream")}}
+{{Compat}}
## 関連情報
-- [WHATWG Stream Visualiser](https://whatwg-stream-visualizer.glitch.me/): 読み取り、書き込み、変換ストリームの基本的な視覚化
+- [WHATWG Stream Visualizer](https://whatwg-stream-visualizer.glitch.me/): 読み取り、書き込み、変換ストリームの基本的な視覚化
+- [Streams—The Definitive Guide](https://web.dev/streams/)
From 6712f736344d17b1350204801a9002dc0471f79f Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 14:39:44 +0900
Subject: [PATCH 009/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../transformstream/transformstream/index.md | 107 ++++++++++++++++++
1 file changed, 107 insertions(+)
create mode 100644 files/ja/web/api/transformstream/transformstream/index.md
diff --git a/files/ja/web/api/transformstream/transformstream/index.md b/files/ja/web/api/transformstream/transformstream/index.md
new file mode 100644
index 00000000000000..df9f8e6b270ad8
--- /dev/null
+++ b/files/ja/web/api/transformstream/transformstream/index.md
@@ -0,0 +1,107 @@
+---
+title: "TransformStream: TransformStream() コンストラクター"
+short-title: TransformStream()
+slug: Web/API/TransformStream/TransformStream
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
+---
+
+{{APIRef("Streams")}}
+
+**`TransformStream()`** コンストラクターは、新しい {{domxref("TransformStream")}} オブジェクトを作成します。このオブジェクトは、書き込み可能な端点を表す {{domxref("WritableStream")}} と、読み取り可能な端点を表す {{domxref("ReadableStream")}} の 2 つのストリームを表します。
+
+## 構文
+
+```js-nolint
+new TransformStream()
+new TransformStream(transformer)
+new TransformStream(transformer, writableStrategy)
+new TransformStream(transformer, writableStrategy, readableStrategy)
+```
+
+### 引数
+
+- `transformer` {{optional_inline}}
+
+ - : `transformer` を表すオブジェクト。指定されなかった場合、ストリームは**同一変換ストリーム**となり、書き込み可能な端点に書き込まれたすべてのチャンクをそのまま読み取り可能な端点に転送します。
+
+ 変換オブジェクトは以下のメソッドを持つことができます。各メソッドの、 `controller` は {{domxref("TransformStreamDefaultController")}} のインスタンスです。
+
+ - `start(controller)`
+ - : `TransformStream` が構築される際に呼び出されます。通常は {{domxref("TransformStreamDefaultController.enqueue()")}} を使用してチャンクをキューに入れます。
+ - `transform(chunk, controller)`
+ - : 書き込み可能な端点に書き込まれたチャンクが変換される準備ができたときに呼び出され、変換ストリームの作業をします。書き込み処理の成功や失敗を指示するプロミスを返すことがあります。もし `transform()` メソッドが与えられなかった場合、ID 変換が使用され、チャンクは変更されずにキューに入れられます。
+ - `flush(controller)`
+ - : 書き込み可能な端点に書き込まれたチャンクがすべて正常に変換され、書き込み可能な端点が閉じられた後に呼び出されます。
+
+- `writableStrategy` {{optional_inline}}
+
+ - : オプションでストリームのキューイング戦略を定義するオブジェクト。これは 2 つの引数を取ります。
+
+ - `highWaterMark`
+ - : 非負の整数。これは、背圧が適用される前に内部キューに格納することができるチャンクの総数を定義します。
+ - `size(chunk)`
+ - : 引数 `chunk` を取るメソッド。これは各チャンクに使用するサイズをバイト単位で示します。
+
+- `readableStrategy` {{optional_inline}}
+
+ - : オプションでストリームのキューイング戦略を定義するオブジェクト。 2 つの引数を取ります。
+
+ - `highWaterMark`
+ - : 非負の整数。これは、背圧が適用される前に内部キューに格納することができるチャンクの総数を定義します。
+ - `size(chunk)`
+ - : 引数 `chunk` を取るメソッド。これは各チャンクに使用するサイズをバイト単位で示します。
+
+> **メモ:** 自分自身で独自の `readableStrategy` や `writableStrategy` を定義したり、オブジェクト値に対して {{domxref("ByteLengthQueuingStrategy")}} や {{domxref("CountQueuingStrategy")}} のインスタンスを使用したりすることができます。
+
+## 例
+
+### テキストを大文字に変換
+
+次の例は、チャンクごとにテキストを大文字に変換します。この例は [Streams—The Definitive Guide](https://web.dev/streams/) から引用したもので、異なる種類のストリームの例が数多く含まれています。
+
+```js
+function upperCaseStream() {
+ return new TransformStream({
+ transform(chunk, controller) {
+ controller.enqueue(chunk.toUpperCase());
+ },
+ });
+}
+
+function appendToDOMStream(el) {
+ return new WritableStream({
+ write(chunk) {
+ el.append(chunk);
+ },
+ });
+}
+
+fetch("./lorem-ipsum.txt").then((response) =>
+ response.body
+ .pipeThrough(new TextDecoderStream())
+ .pipeThrough(upperCaseStream())
+ .pipeTo(appendToDOMStream(document.body)),
+);
+```
+
+### 同一変換ストリームの作成
+
+引数 `transformer` を与えない場合は、書き込み可能な端点に書き込まれたチャンクを変更せずに読み取り可能な辺にすべて転送する同一変換ストリームになります。次の例では、パイプにバッファー機能を追加するために同一変換ストリームを使用しています。
+
+```js
+const writableStrategy = new ByteLengthQueuingStrategy({
+ highWaterMark: 1024 * 1024,
+});
+readableStream
+ .pipeThrough(new TransformStream(undefined, writableStrategy))
+ .pipeTo(writableStream);
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
From 0855cb5be03dc47171cca929a99f4d5bb8fe60ed Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 14:52:43 +0900
Subject: [PATCH 010/331] =?UTF-8?q?2023/04/08=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../web/api/transformstream/readable/index.md | 32 +++++++++++++++++++
.../web/api/transformstream/writable/index.md | 32 +++++++++++++++++++
2 files changed, 64 insertions(+)
create mode 100644 files/ja/web/api/transformstream/readable/index.md
create mode 100644 files/ja/web/api/transformstream/writable/index.md
diff --git a/files/ja/web/api/transformstream/readable/index.md b/files/ja/web/api/transformstream/readable/index.md
new file mode 100644
index 00000000000000..90a492c2c0bfb4
--- /dev/null
+++ b/files/ja/web/api/transformstream/readable/index.md
@@ -0,0 +1,32 @@
+---
+title: "TransformStream: readable プロパティ"
+short-title: readable
+slug: Web/API/TransformStream/readable
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{APIRef("Streams")}}
+
+**`readable`** は {{domxref("TransformStream")}} インターフェイスの読み取り専用プロパティで、この `TransformStream` が制御する {{domxref("ReadableStream")}} インスタンスを返します。
+
+## 値
+
+{{domxref("ReadableStream")}} です。
+
+## 例
+
+次の例は、新しい {{domxref("TransformStream")}} を `textEncoderStream` として作成し、 `readable` の値をコンソールに出力します。
+
+```js
+const textEncoderStream = new TransformStream();
+console.log(textEncoderStream.readable); // a ReadableStream
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
diff --git a/files/ja/web/api/transformstream/writable/index.md b/files/ja/web/api/transformstream/writable/index.md
new file mode 100644
index 00000000000000..91d7acff704783
--- /dev/null
+++ b/files/ja/web/api/transformstream/writable/index.md
@@ -0,0 +1,32 @@
+---
+title: "TransformStream: writable プロパティ"
+short-title: writable
+slug: Web/API/TransformStream/writable
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{APIRef("Streams")}}
+
+**`writable`** は {{domxref("TransformStream")}} インターフェイスの読み取り専用プロパティで、この `TransformStream` が制御する {{domxref("WritableStream")}} インスタンスを返します。
+
+## 値
+
+{{domxref("WritableStream")}} です。
+
+## 例
+
+次の例は、新しい {{domxref("TransformStream")}} を `textEncoderStream` として作成し、 `writable` の値をコンソールに出力します。
+
+```js
+const textEncoderStream = new TransformStream();
+console.log(textEncoderStream.writable); // a WritableStream
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
From e68cfcef2be8bd7a3b257206527fa5bd197b42a4 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 15:18:00 +0900
Subject: [PATCH 011/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../transformstreamdefaultcontroller/index.md | 89 +++++++++++++++++++
1 file changed, 89 insertions(+)
create mode 100644 files/ja/web/api/transformstreamdefaultcontroller/index.md
diff --git a/files/ja/web/api/transformstreamdefaultcontroller/index.md b/files/ja/web/api/transformstreamdefaultcontroller/index.md
new file mode 100644
index 00000000000000..2210dfa3b1c813
--- /dev/null
+++ b/files/ja/web/api/transformstreamdefaultcontroller/index.md
@@ -0,0 +1,89 @@
+---
+title: TransformStreamDefaultController
+slug: Web/API/TransformStreamDefaultController
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
+---
+
+{{APIRef("Streams")}}
+
+**TransformStreamDefaultController`** は[ストリーム API](/ja/docs/Web/API/Streams_API) のインターフェイスで、関連する {{domxref("ReadableStream")}} と {{domxref("WritableStream")}} を操作するメソッドを提供します。
+
+{{domxref("TransformStream")}} を作成すると、 `TransformStreamDefaultController` が作成されます。そのため、コンストラクターはありません。 `TransformStreamDefaultController` のインスタンスを取得するには、 {{domxref("TransformStream.TransformStream", "TransformStream()")}} のコールバックメソッドを使用します。
+
+## インスタンスプロパティ
+
+- {{domxref("TransformStreamDefaultController.desiredSize")}} {{ReadOnlyInline}}
+ - : ストリームの内部キューの読み取り可能な側を埋めるために必要なサイズを返します。
+
+## インスタンスメソッド
+
+- {{domxref("TransformStreamDefaultController.enqueue()")}}
+ - : ストリームの読み取り可能な側にチャンク(単一のデータ)をキューに入れます。
+- {{domxref("TransformStreamDefaultController.error()")}}
+ - : 変換ストリームの読み取り可能な側と書き込み可能な側の両方をエラーを発生させます。
+- {{domxref("TransformStreamDefaultController.terminate()")}}
+ - : ストリームの読み取り可能な側を閉じ、書き込み可能な側にエラーを発生させます。
+
+## 例
+
+次の例では、変換ストリームは、 {{domxref("TransformStreamDefaultController.error()","error()")}} メソッドと {{domxref("TransformStreamDefaultController.enqueue()", "enqueue()")}} メソッドを使用して、受信したチャンクをすべて {{jsxref("Uint8Array")}} 値として渡します。
+
+```js
+const transformContent = {
+ start() {}, // required.
+ async transform(chunk, controller) {
+ chunk = await chunk;
+ switch (typeof chunk) {
+ case "object":
+ // just say the stream is done I guess
+ if (chunk === null) {
+ controller.terminate();
+ } else if (ArrayBuffer.isView(chunk)) {
+ controller.enqueue(
+ new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength),
+ );
+ } else if (
+ Array.isArray(chunk) &&
+ chunk.every((value) => typeof value === "number")
+ ) {
+ controller.enqueue(new Uint8Array(chunk));
+ } else if (
+ typeof chunk.valueOf === "function" &&
+ chunk.valueOf() !== chunk
+ ) {
+ this.transform(chunk.valueOf(), controller); // hack
+ } else if ("toJSON" in chunk) {
+ this.transform(JSON.stringify(chunk), controller);
+ }
+ break;
+ case "symbol":
+ controller.error("Cannot send a symbol as a chunk part");
+ break;
+ case "undefined":
+ controller.error("Cannot send undefined as a chunk part");
+ break;
+ default:
+ controller.enqueue(this.textencoder.encode(String(chunk)));
+ break;
+ }
+ },
+ flush() {
+ /* do any destructor work here */
+ },
+};
+
+class AnyToU8Stream extends TransformStream {
+ constructor() {
+ super({ ...transformContent, textencoder: new TextEncoder() });
+ }
+}
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
From 32cc7533679f7a1965e8e648d34edc88f778af47 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 15:23:39 +0900
Subject: [PATCH 012/331] =?UTF-8?q?2023/04/08=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../desiredsize/index.md | 35 ++++++++++++
.../enqueue/index.md | 57 +++++++++++++++++++
.../error/index.md | 55 ++++++++++++++++++
.../terminate/index.md | 41 +++++++++++++
4 files changed, 188 insertions(+)
create mode 100644 files/ja/web/api/transformstreamdefaultcontroller/desiredsize/index.md
create mode 100644 files/ja/web/api/transformstreamdefaultcontroller/enqueue/index.md
create mode 100644 files/ja/web/api/transformstreamdefaultcontroller/error/index.md
create mode 100644 files/ja/web/api/transformstreamdefaultcontroller/terminate/index.md
diff --git a/files/ja/web/api/transformstreamdefaultcontroller/desiredsize/index.md b/files/ja/web/api/transformstreamdefaultcontroller/desiredsize/index.md
new file mode 100644
index 00000000000000..14ec1c0b04833c
--- /dev/null
+++ b/files/ja/web/api/transformstreamdefaultcontroller/desiredsize/index.md
@@ -0,0 +1,35 @@
+---
+title: "TransformStreamDefaultController: desiredSize プロパティ"
+short-title: desiredSize
+slug: Web/API/TransformStreamDefaultController/desiredSize
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{DefaultAPISidebar("Streams API")}}
+
+**`desiredSize`** は {{domxref("TransformStreamDefaultController")}} インターフェイスの読み取り専用プロパティで、関連付けられた {{domxref("ReadableStream")}} のキューを埋めるのに必要なサイズを返します。
+
+`ReadableStream` の内部キューには、キューに入れられたがまだ読み込まれていないチャンクが格納されます。ブラウザーはストリームを埋めるために **必要なサイズ** を決定し、この値が `desiredSize` プロパティによって返されます。
+
+もし `desiredSize` が `0` ならば、キューは満杯です。従って、この情報を使用して[手動で背圧をかける](/ja/docs/Web/API/Streams_API/Concepts#背圧)ことでキューを管理することができます。
+
+## 値
+
+必要なサイズ。
+
+## 例
+
+次の例では、 `desiredSize` をコンソールに出力します。
+
+```js
+console.log(controller.desiredSize);
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
diff --git a/files/ja/web/api/transformstreamdefaultcontroller/enqueue/index.md b/files/ja/web/api/transformstreamdefaultcontroller/enqueue/index.md
new file mode 100644
index 00000000000000..7d263063358dd5
--- /dev/null
+++ b/files/ja/web/api/transformstreamdefaultcontroller/enqueue/index.md
@@ -0,0 +1,57 @@
+---
+title: "TransformStreamDefaultController: enqueue() メソッド"
+short-title: enqueue()
+slug: Web/API/TransformStreamDefaultController/enqueue
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{DefaultAPISidebar("Streams API")}}
+
+**`enqueue()`** は {{domxref("TransformStreamDefaultController")}} インターフェイスのメソッドで、このストリームの読み取り可能側にある指定されたチャンクをキューに入れます。
+
+読み取り可能なストリームとチャンクについて詳しくは、[読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)を参照してください。
+
+## 構文
+
+```js-nolint
+enqueue(chunk)
+```
+
+### 引数
+
+- `chunk`
+ - : キューに入れられるチャンク。チャンクとは単一のデータのことです。データの種類は問いません。ストリームは様々な型のチャンクを格納することができます。
+
+### 返値
+
+なし ({{jsxref("undefined")}})。
+
+### 例外
+
+- {{jsxref("TypeError")}}
+ - : ストリームが読み取り可能ではありません。
+ これは、ストリームが `controller.error()` によってエラーになった場合や、コントローラーの `controller.close()` メソッドが名付けられずに閉じられた場合に発生します。
+
+## 例
+
+この例では、エンコードされたチャンクが `enqueue()` メソッドを使用してキューに渡されます。
+
+```js
+const textEncoderStream = new TransformStream({
+ transform(chunk, controller) {
+ controller.enqueue(new TextEncoder().encode(chunk));
+ },
+ flush(controller) {
+ controller.terminate();
+ },
+});
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
diff --git a/files/ja/web/api/transformstreamdefaultcontroller/error/index.md b/files/ja/web/api/transformstreamdefaultcontroller/error/index.md
new file mode 100644
index 00000000000000..51575578ec4836
--- /dev/null
+++ b/files/ja/web/api/transformstreamdefaultcontroller/error/index.md
@@ -0,0 +1,55 @@
+---
+title: "TransformStreamDefaultController: error() メソッド"
+short-title: error()
+slug: Web/API/TransformStreamDefaultController/error
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{DefaultAPISidebar("Streams API")}}
+
+**`error()`** は {{domxref("TransformStreamDefaultController")}} インターフェイスのメソッドで、両側のストリームをエラーにします。これ以上何か操作をすると、指定されたエラーメッセージとともに失敗するようになり、キュー内のチャンクは破棄されます。
+
+## 構文
+
+```js-nolint
+error(reason)
+```
+
+### 引数
+
+- `reason`
+ - : それ以降のストリームの操作において返されるエラーメッセージを格納した文字列。
+
+### 返値
+
+なし ({{jsxref("undefined")}})。
+
+## 例
+
+この例では、チャンクが変換できなかったときに `error()` メソッドを使用しています。
+
+```js
+const transformContent = {
+ start() {
+ /* … */
+ },
+ async transform(chunk, controller) {
+ try {
+ chunk = await applyMyTransformation(chunk);
+ } catch (err) {
+ controller.error(`Unable to transform chunk: ${err}`);
+ }
+ // …
+ },
+ // …
+};
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
diff --git a/files/ja/web/api/transformstreamdefaultcontroller/terminate/index.md b/files/ja/web/api/transformstreamdefaultcontroller/terminate/index.md
new file mode 100644
index 00000000000000..72aebe2650477f
--- /dev/null
+++ b/files/ja/web/api/transformstreamdefaultcontroller/terminate/index.md
@@ -0,0 +1,41 @@
+---
+title: "TransformStreamDefaultController: terminate() メソッド"
+short-title: terminate()
+slug: Web/API/TransformStreamDefaultController/terminate
+l10n:
+ sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6
+---
+
+{{DefaultAPISidebar("Streams API")}}
+
+**`terminate()`** は {{domxref("TransformStreamDefaultController")}} インターフェイスのメソッドで、このストリームの読み取り可能側を閉じ、書き込み可能側をエラーにします。
+
+## 構文
+
+```js-nolint
+terminate()
+```
+
+### 引数
+
+なし。
+
+### 返値
+
+なし ({{jsxref("undefined")}})。
+
+## 例
+
+下記の例では、 {{domxref("TransformStreamDefaultController")}} で `terminate()` メソッドを呼び出しています。
+
+```js
+controller.terminate();
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
From 42d00868cf52dbc89f6f816c21bc0e1187b75018 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 16:35:13 +0900
Subject: [PATCH 013/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ja/web/api/writablestream/close/index.md | 122 ++++++++++++++++++
1 file changed, 122 insertions(+)
create mode 100644 files/ja/web/api/writablestream/close/index.md
diff --git a/files/ja/web/api/writablestream/close/index.md b/files/ja/web/api/writablestream/close/index.md
new file mode 100644
index 00000000000000..258fe8680e6e7f
--- /dev/null
+++ b/files/ja/web/api/writablestream/close/index.md
@@ -0,0 +1,122 @@
+---
+title: "WritableStream: close() メソッド"
+short-title: close()
+slug: Web/API/WritableStream/close
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
+---
+
+{{APIRef("Streams")}}
+
+**`close()`** は {{domxref("WritableStream")}} インターフェイスのメソッドで、関連付けられたストリームを閉じます。このメソッドが呼び出される前に書き込まれたチャンクはすべて、返されたプロミスが履行される前に送信されます。
+
+これは {{domxref("WritableStreamDefaultWriter")}} を {{domxref("WritableStream.getWriter()", "getWriter()")}} で取得し、 {{domxref("WritableStreamDefaultWriter.close()", "close()")}} を呼び付けるのと同じです。
+
+## 構文
+
+```js-nolint
+close()
+```
+
+### 引数
+
+なし。
+
+### 返値
+
+{{jsxref("Promise")}} で、閉じる前に残りのチャンクがすべて正常に書き込まれた場合は `undefined` で履行され、処理中に問題が発生した場合はエラーで拒否されます。
+
+### 例外
+
+- {{jsxref("TypeError")}}
+ - : 閉じようとしているストリームがロックされています。
+
+## 例
+
+次の例は `WritableStream` のいくつかの機能を示しています。これはカスタムシンクと、 API が提供するキューイング戦略による `WritableStream` の作成を示しています。次に `sendMessage()` という関数を呼び出して、新しく作成したストリームと文字列を渡します。この関数の内部では、ストリームの `getWriter()` メソッドを呼び出して {{domxref("WritableStreamDefaultWriter")}} のインスタンスを返します。 `forEach()` 呼び出しは、文字列の各チャンクをストリームに書き込むために使用されます。最後に、 `write()` と `close()` はチャンクとストリームの成功と失敗を処理するプロミスを返します。なお、ストリーム自体で `close()` を呼び出すには、 `defaultWriter.releaseLock();` を使用してライターを切断する必要があります。
+
+```html hidden
+
+```
+
+```js hidden
+const list = document.getElementById("log");
+function log(message) {
+ const listItem = document.createElement("li");
+ listItem.textContent = message;
+ list.appendChild(listItem);
+}
+```
+
+```js
+function sendMessage(message, writableStream) {
+ // defaultWriter is of type WritableStreamDefaultWriter
+ const defaultWriter = writableStream.getWriter();
+ const encoder = new TextEncoder();
+ const encoded = encoder.encode(message, { stream: true });
+ encoded.forEach((chunk) => {
+ defaultWriter.ready
+ .then(() => {
+ defaultWriter.write(chunk);
+ })
+ .catch((err) => {
+ log("Chunk error:", err);
+ });
+ });
+
+ // Call ready again to ensure that all chunks are written
+ // before closing the writer.
+ defaultWriter.ready
+ .then(() => {
+ defaultWriter.releaseLock();
+ writableStream.close();
+ })
+ .then(() => {
+ log("All chunks written / stream closed.");
+ })
+ .catch((err) => {
+ log("Stream error:", err);
+ });
+}
+
+const decoder = new TextDecoder("utf-8");
+const queuingStrategy = new CountQueuingStrategy({ highWaterMark: 1 });
+let result = "";
+const writableStream = new WritableStream(
+ {
+ // Implement the sink
+ write(chunk) {
+ return new Promise((resolve, reject) => {
+ const buffer = new ArrayBuffer(1);
+ const view = new Uint8Array(buffer);
+ view[0] = chunk;
+ const decoded = decoder.decode(view, { stream: true });
+ const listItem = document.createElement("li");
+ result += decoded;
+ resolve();
+ });
+ },
+ close() {
+ const listItem = document.createElement("li");
+ log(`[MESSAGE RECEIVED] ${result}`);
+ },
+ abort(err) {
+ log("Sink error:", err);
+ },
+ },
+ queuingStrategy,
+);
+
+log("Sending 'Hello, world.' message.");
+sendMessage("Hello, world.", writableStream);
+```
+
+{{EmbedLiveSample("Examples", "100%", "100px")}}
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
From 3671864d2f0d351bbbbc99cb074fb14e67024bd0 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 16:11:32 +0900
Subject: [PATCH 014/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/writablestream/abort/index.md | 9 +++++----
files/ja/web/api/writablestream/getwriter/index.md | 5 +++--
files/ja/web/api/writablestream/index.md | 8 ++++----
files/ja/web/api/writablestream/locked/index.md | 5 +++--
.../web/api/writablestream/writablestream/index.md | 13 +++++++------
5 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/files/ja/web/api/writablestream/abort/index.md b/files/ja/web/api/writablestream/abort/index.md
index 51f31ffa391ef6..37b0b4f6d5da87 100644
--- a/files/ja/web/api/writablestream/abort/index.md
+++ b/files/ja/web/api/writablestream/abort/index.md
@@ -1,8 +1,9 @@
---
-title: WritableStream.abort()
+title: "WritableStream: abort() メソッド"
+short-title: abort()
slug: Web/API/WritableStream/abort
l10n:
- sourceCommit: c575deb5f1775b532360c612a85b35a5ff9525d9
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
{{APIRef("Streams")}}
@@ -17,12 +18,12 @@ abort(reason)
### 引数
-- reason
+- `reason`
- : 人間が読むことのできる文字列で、中止した理由を提供します。
### 返値
-{{jsxref("Promise")}} です。 `reason` 引数で指定された値で満たされます。
+{{jsxref("Promise")}} です。 `reason` 引数で指定された値で履行されます。
### 例外
diff --git a/files/ja/web/api/writablestream/getwriter/index.md b/files/ja/web/api/writablestream/getwriter/index.md
index c58747f913ec7f..2baaedaa7f87dc 100644
--- a/files/ja/web/api/writablestream/getwriter/index.md
+++ b/files/ja/web/api/writablestream/getwriter/index.md
@@ -1,8 +1,9 @@
---
-title: WritableStream.getWriter()
+title: "WritableStream: getWriter() メソッド"
+short-title: getWriter()
slug: Web/API/WritableStream/getWriter
l10n:
- sourceCommit: c575deb5f1775b532360c612a85b35a5ff9525d9
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
{{APIRef("Streams")}}
diff --git a/files/ja/web/api/writablestream/index.md b/files/ja/web/api/writablestream/index.md
index c1c39c61cc5c2b..9b04f9fb5e487a 100644
--- a/files/ja/web/api/writablestream/index.md
+++ b/files/ja/web/api/writablestream/index.md
@@ -2,26 +2,26 @@
title: WritableStream
slug: Web/API/WritableStream
l10n:
- sourceCommit: 579788ba8fe61b6c7dddaec09dee7b33d6548a4d
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
{{APIRef("Streams")}}
**`WritableStream`** は[ストリーム API](/ja/docs/Web/API/Streams_API) のインターフェイスで、ストリーミングデータをシンクと呼ばれる宛先に書き込むための標準的な抽象化を提供します。 このオブジェクトには、背圧とキューイングが組み込まれています。
-`WritableStream` は{{glossary("Transferable objects","移譲可能オブジェクト")}}です。
+`WritableStream` は[移譲可能オブジェクト](/ja/docs/Web/API/Web_Workers_API/Transferable_objects)です。
## コンストラクター
- {{domxref("WritableStream.WritableStream", "WritableStream()")}}
- : 新しい `WritableStream` オブジェクトを作成します。
-## プロパティ
+## インスタンスプロパティ
- {{domxref("WritableStream.locked")}} {{ReadOnlyInline}}
- : 論理値で、 `WritableStream` がライターにロックされているかどうかを示します。
-## メソッド
+## インスタンスメソッド
- {{domxref("WritableStream.abort()")}}
- : ストリームを中止し、プロデューサーがストリームに正常に書き込むことができなくなり、キューに入れられた書き込みが破棄されてすぐにエラー状態に移行することを通知します。
diff --git a/files/ja/web/api/writablestream/locked/index.md b/files/ja/web/api/writablestream/locked/index.md
index 83901cfc2d4862..428f241ee76678 100644
--- a/files/ja/web/api/writablestream/locked/index.md
+++ b/files/ja/web/api/writablestream/locked/index.md
@@ -1,8 +1,9 @@
---
-title: WritableStream.locked
+title: "WritableStream: locked プロパティ"
+short-title: locked
slug: Web/API/WritableStream/locked
l10n:
- sourceCommit: f7dae62645a2c735ed6f6ed63f664bf279fdfc4b
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
{{APIRef("Streams")}}
diff --git a/files/ja/web/api/writablestream/writablestream/index.md b/files/ja/web/api/writablestream/writablestream/index.md
index f8539359f53851..d9c2a9c5fa3ddb 100644
--- a/files/ja/web/api/writablestream/writablestream/index.md
+++ b/files/ja/web/api/writablestream/writablestream/index.md
@@ -1,8 +1,9 @@
---
-title: WritableStream()
+title: "WritableStream: WritableStream() コンストラクター"
+short-title: WritableStream()
slug: Web/API/WritableStream/WritableStream
l10n:
- sourceCommit: 87a9f73c410c9b9e91300695c8aa4931367243fb
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
{{APIRef("Streams")}}
@@ -20,15 +21,15 @@ new WritableStream(underlyingSink, queuingStrategy)
- `underlyingSink` {{optional_inline}}
- - : 構築されたストリームのインスタンスの振る舞いを定義するメソッドとプロパティを含むオブジェクト。 `underlyingSink` には以下を含めることができます。
+ - : 構築されたストリームのインスタンスの振る舞いを定義するメソッドとプロパティを含むオブジェクト。 `underlyingSink` には以下を含めることができます。このメソッドに渡される `controller` 引数は {{domxref("WritableStreamDefaultController")}} であり、これを使用して中止やエラーの通知を行うことができます。
- `start(controller)` {{optional_inline}}
- - : これは、オブジェクトが構築されたときにすぐに呼び出されるメソッドです。このメソッドの中身は開発者が定義し、基礎となるシンクにアクセスすることを目的とする必要があります。この処理が非同期で行われる場合は、成功か失敗かを示すプロミスを返すことができます。このメソッドに渡される `controller` 引数は {{domxref("WritableStreamDefaultController")}} である。これを使用して、開発者は設定中にストリームを制御することができます。
+ - : これは、オブジェクトが構築されたときにすぐに呼び出されるメソッドです。このメソッドの中身は開発者が定義し、基礎となるシンクにアクセスすることを目的とする必要があります。この処理が非同期で行われる場合は、成功か失敗かを示すプロミスを返すことができます。
- `write(chunk, controller)` {{optional_inline}}
- - : このメソッドも開発者によって定義され、新しいデータチャンク (`chunk` 引数で指定されたもの)が基底のシンクに書き込める状態になったときに呼び出されます。このメソッドは、書き込み処理の成功または失敗を示すプロミスを返すことができます。このメソッドに引数として渡される `controller` 引数は {{domxref("WritableStreamDefaultController")}} であり、チャンクを追加して書き込みを行う際に、開発者がストリームを制御するために使用することができます。このメソッドは前回の書き込みが成功した後にのみ呼び出され、ストリームが閉じられたり中断されたりした後には呼び出されません(下記を参照)。
+ - : このメソッドも開発者によって定義され、新しいデータチャンク (`chunk` 引数で指定されたもの)が基底のシンクに書き込める状態になったときに呼び出されます。このメソッドは、書き込み処理の成功または失敗を示すプロミスを返すことができます。このメソッドは前回の書き込みが成功した後にのみ呼び出され、ストリームが閉じられたり中断されたりした後には呼び出されません(下記参照)。
- `close(controller)` {{optional_inline}}
- : このメソッドも開発者によって定義され、アプリがストリームへのチャンクの書き込みを完了したことを通知すると呼び出されます。中身は、基礎となるシンクへの書き込みを確定し、それへのアクセスを解放するために必要なことを何でも行う必要があります。
- この処理が非同期である場合、成功または失敗を示すプロミスを返すことができます。このメソッドは、キューに入れられたすべての書き込みが成功した後にのみ呼び出されます。このメソッドに渡される `controller` 引数は {{domxref("WritableStreamDefaultController")}} で、書き込みが終わったときにストリームを制御するために使用することができます。
+ この処理が非同期である場合、成功または失敗を示すプロミスを返すことができます。このメソッドは、キューに入れられたすべての書き込みが成功した後にのみ呼び出されます。
- `abort(reason)` {{optional_inline}}
- : このメソッドも開発者によって定義され、アプリが突然ストリームを閉じてエラー状態にしたいことを合図したときに呼び出されます。これは `close()` のように保持されたリソースを整理することができますが、書き込みがキューイングされている場合でも `abort()` が呼び出されます - これらのチャンクは破棄されます。この処理が非同期の場合、成功や失敗のシグナルのためにプロミスを返すことができます。 `reason` 引数には、ストリームが中断された理由を記述する文字列を指定します。
From b0987f2e43a765dda11137144f04ac12b4684b18 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 16:54:25 +0900
Subject: [PATCH 015/331] =?UTF-8?q?2023/09/14=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/response/body/index.md | 29 +++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/files/ja/web/api/response/body/index.md b/files/ja/web/api/response/body/index.md
index 98cbe7a265aa94..67ec764b9fad63 100644
--- a/files/ja/web/api/response/body/index.md
+++ b/files/ja/web/api/response/body/index.md
@@ -1,22 +1,27 @@
---
-title: Response.body
+title: "Response: body プロパティ"
+short-title: body
slug: Web/API/Response/body
l10n:
- sourceCommit: e0e09b1df51489867f2e74c18586d168ba5e00d1
+ sourceCommit: 84b1729de4f527c8d81e44a38fca70ea4db97922
---
-{{APIRef("Fetch")}}
+{{APIRef("Fetch API")}}
**`body`** は {{domxref("Response")}} インターフェイスの読み取り専用プロパティで、本体コンテンツの {{domxref("ReadableStream")}} です。
## 値
-{{domxref("ReadableStream")}}、または [`body`](/ja/docs/Web/API/Response/Response#body) プロパティが null で構築された `Response` オブジェクト、あるいは[本体](/ja/docs/Web/HTTP/Messages#body_2)を持たない実際の [HTTP レスポンス](/ja/docs/Web/HTTP/Messages#http_responses)に対しては [`null`](/ja/docs/Web/JavaScript/Reference/Operators/null) です。
+{{domxref("ReadableStream")}}、または `Response` オブジェクトが[構築](/ja/docs/Web/API/Response/Response)時に [`body`](/ja/docs/Web/API/Response/Response#body) プロパティが null であった場合、あるいは [HTTP レスポンス](/ja/docs/Web/HTTP/Messages#http_responses)に[本体](/ja/docs/Web/HTTP/Messages#body_2)がなかった場合には [`null`](/ja/docs/Web/JavaScript/Reference/Operators/null) になります。
+
+ストリームは[読み取り可能なバイトストリーム](/ja/docs/Web/API/Streams_API/Using_readable_byte_streams)で、 {{domxref("ReadableStreamBYOBReader")}} を用いたゼロコピー移譲に対応しています。
> **メモ:** 現在のブラウザーは、本体なしのレスポンス(例えば、 [`HEAD`](/ja/docs/Web/HTTP/Methods/HEAD) リクエストに対するレスポンスや、 [`204 No Content`](/ja/docs/Web/HTTP/Status/204) レスポンス)には `body` プロパティを `null` に設定するという仕様に実際には適合していません。
## 例
+### 画像の複製
+
[単純なストリームポンプ](https://mdn.github.io/dom-examples/streams/simple-pump/)の例では、画像を読み取り、 `response.body` を使用してレスポンスのストリームを公開し、{{domxref("ReadableStream.getReader()", "ReadableStream.getReader()")}} を使用してリーダーを作成し、そのストリームのチャンクを 2 番目のカスタム読み取り可能なストリームのキューに入れます。画像の同一コピーを効果的に作成します。
```js
@@ -56,6 +61,22 @@ fetch("./tortoise.png")
.catch((err) => console.error(err));
```
+### BYOB リーダーの作成
+
+この例では、 {{domxref("ReadableStreamBYOBReader")}} を使用して本体から {{domxref("ReadableStream.getReader()", "ReadableStream.getReader({mode: 'byob'})")}} を構築します。このリーダーを使用して、レスポンスデータのゼロコピー移譲を実装することができます。
+
+```js
+async function getProducts(url) {
+ const response = await fetch(url);
+ const reader = response.body.getReader({ mode: "byob" });
+ // このレスポンスを読む
+}
+
+getProducts(
+ "https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json",
+);
+```
+
## 仕様書
{{Specifications}}
From bc502a47c9e66a276e23793b96e77ade5c66bb77 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 17:19:32 +0900
Subject: [PATCH 016/331] =?UTF-8?q?2023/09/06=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/fetch/index.md | 40 ++++++++++++++++++++++++---------
1 file changed, 30 insertions(+), 10 deletions(-)
diff --git a/files/ja/web/api/fetch/index.md b/files/ja/web/api/fetch/index.md
index 607bf07cc5fa71..16acf03d6ad17e 100644
--- a/files/ja/web/api/fetch/index.md
+++ b/files/ja/web/api/fetch/index.md
@@ -1,8 +1,9 @@
---
-title: fetch()
+title: fetch() グローバル関数
+short-title: fetch()
slug: Web/API/fetch
l10n:
- sourceCommit: 4e233c16c6f0d347972c5c762f5b836318a46124
+ sourceCommit: bb75692ff9b82320169ed3f27fcc5136c86b8d21
---
{{APIRef("Fetch API")}}
@@ -40,14 +41,22 @@ fetch(resource, options)
- : リクエストに適用したいカスタム設定を含むオブジェクト。可能なオプションは以下の通りです。
- `method`
- - : リクエストするメソッド、`GET`、`POST` など。なお、 {{httpheader("Origin")}} ヘッダーは {{HTTPMethod("HEAD")}} または {{HTTPMethod("GET")}} メソッドの読み取りリクエストでは設定されません。
+ - : リクエストするメソッド、`"GET"`、`"POST"` など。既定値は `"GET"` です。
+ なお、 {{httpheader("Origin")}} ヘッダーは {{HTTPMethod("HEAD")}} または {{HTTPMethod("GET")}} メソッドの読み取りリクエストでは設定されません。
(この動作は Firefox 65 で修正されました。 [Firefox バグ 1508661](https://bugzil.la/1508661) を参照)
+ [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110#name-overview) のメソッドのいずれかと大文字小文字を区別せずに照合する文字列は、自動的に大文字になります。
+ (`PATCH` のような)カスタムメソッドを使用したい場合は、自分で大文字にする必要があります。
- `headers`
- - : リクエストに追加したいヘッダーで、 {{domxref("Headers")}} オブジェクトまたは {{jsxref("String")}} 値を持つオブジェクトリテラルで指定してください。なお、[一部の名前は禁止されています](/ja/docs/Glossary/Forbidden_header_name)。
+
+ - : リクエストに追加したいヘッダーで、 {{domxref("Headers")}} オブジェクトまたは {{jsxref("String")}} 値を持つオブジェクトリテラルで指定してください。
+ なお、[一部の名前は禁止されています](/ja/docs/Glossary/Forbidden_header_name)。
+
+ > **メモ:** HTTP の [`Authorization`](/ja/docs/Web/HTTP/Headers/Authorization) ヘッダーがリクエストに追加される場合がありますが、そのリクエストがオリジン間でリダイレクトされた場合は削除されます。
+
- `body`
- : リクエストに追加したい本体です。これには {{domxref("Blob")}}, {{jsxref("ArrayBuffer")}}, {{jsxref("TypedArray")}}, {{jsxref("DataView")}}, {{domxref("FormData")}}, {{domxref("URLSearchParams")}}, 文字列オブジェクトまたはリテラル、 {{domxref("ReadableStream")}} オブジェクトなどが使用できます。これは最新の利用可能状況で、まだ実験的なものです。[互換性情報](/ja/docs/Web/API/Request#ブラウザーの互換性)を調べて、あなたがこれを使用できるかどうかを確認してください。メソッドが `GET` や `HEAD` の場合は使用できないので注意してください。
- `mode`
- - : リクエストで使用するモードです。例: `cors`, `no-cors`, `same-origin`
+ - : リクエストで使用する[モード](/ja/docs/Web/API/Request/mode)です。例えば `cors`、`no-cors`、`same-origin` などです。
- `credentials`
- : ブラウザーが資格情報を使用して何を行うか([クッキー](/ja/docs/Web/HTTP/Cookies)、 [HTTP 認証](/ja/docs/Web/HTTP/Authentication)項目、 TLS クライアント証明書)を制御します。以下の文字列のうちの何れかでなければなりません。
@@ -68,10 +77,13 @@ fetch(resource, options)
- : リダイレクトレスポンスを取り扱う方法を示します。
- - `follow`: 自動的にリダイレクトに従います。他の方法が指定されていない限り、リダイレクトモードは `follow` に設定されます。
- - `error`: リダイレクトが発生した場合は、エラーで中止します。
- - `manual`: 呼び出し側は、レスポンスを別のコンテキストで処理する予定です。
- 詳しくは [WHATWG fetch standard](https://fetch.spec.whatwg.org/#requests) を参照してください。
+ - `follow`
+ - : 自動的にリダイレクトを行います。他の方法が指定されていない限り、リダイレクトモードは `follow` に設定されます。
+ - `error`
+ - : リダイレクトが発生した場合は、エラーで中止します。
+ - `manual`
+ - : 呼び出し側は、レスポンスを別のコンテキストで処理する予定です。
+ 詳しくは [WHATWG fetch standard](https://fetch.spec.whatwg.org/#concept-request-redirect-mode) を参照してください。
- `referrer`
- : 文字列で、リクエストのリファラーを指定します。これは同じオリジンの URL、 `about:client`、空文字列のいずれかを取ることができます。
@@ -80,9 +92,17 @@ fetch(resource, options)
- `integrity`
- : リクエストの[サブリソース完全性](/ja/docs/Web/Security/Subresource_Integrity)の値を保持します(`sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=` など)。
- `keepalive`
- - : `keepalive` オプションは、ページの終了後のリクエストを許可するのに使用されます。`keepalive` フラグつきのフェッチは {{domxref("Navigator.sendBeacon()")}} API の置き換えです。
+ - : `keepalive` オプションは、ページの終了後のリクエストを許可するのに使用されます。 `keepalive` フラグつきのフェッチは {{domxref("Navigator.sendBeacon()")}} API の置き換えです。
- `signal`
- : {{domxref("AbortSignal")}} オブジェクトのインスタンスです。つまり {{domxref("AbortController")}} 経由でフェッチリクエストと通信したり望む場合には中止したりできます。
+ - `priority`
+ - : 同じ種類の他のリクエストに対する、この読み込みリクエストの優先度を指定します。以下の文字列のいずれかでなければなりません。
+ - `high`
+ - : 同じ種類の他のリクエストに対する優先度の高いフェッチリクエスト。
+ - `low`
+ - : 同じ種類の他のリクエストと相対した、優先度の低いフェッチリクエスト。
+ - `auto`
+ - : 同じ種類の他のリクエストに対するフェッチリクエストの優先度を自動的に決定します(既定値)。
### 返値
From b44051d746b0702445eece0fe6a9ec6f97598292 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 27 Jul 2023 22:53:47 +0900
Subject: [PATCH 017/331] =?UTF-8?q?2023/07/03=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/event/index.md | 47 ++++++++++++++++-----------------
1 file changed, 23 insertions(+), 24 deletions(-)
diff --git a/files/ja/web/api/event/index.md b/files/ja/web/api/event/index.md
index 5b33186cdb109d..64b1a47d43d562 100644
--- a/files/ja/web/api/event/index.md
+++ b/files/ja/web/api/event/index.md
@@ -1,6 +1,8 @@
---
title: Event
slug: Web/API/Event
+l10n:
+ sourceCommit: 0a3eba62842757c71fbd39060f00a3159b7fcdc5
---
{{APIRef("DOM")}}
@@ -24,7 +26,7 @@ slug: Web/API/Event
なお、すべてのイベントインターフェイスは、名称の末尾が "Event" になっています。
- {{domxref("AnimationEvent")}}
-- {{domxref("AudioProcessingEvent")}}
+- {{domxref("AudioProcessingEvent")}} {{Deprecated_Inline}}
- {{domxref("BeforeUnloadEvent")}}
- {{domxref("BlobEvent")}}
- {{domxref("ClipboardEvent")}}
@@ -33,11 +35,11 @@ slug: Web/API/Event
- {{domxref("CustomEvent")}}
- {{domxref("DeviceMotionEvent")}}
- {{domxref("DeviceOrientationEvent")}}
-- {{domxref("DeviceProximityEvent")}}
- {{domxref("DragEvent")}}
- {{domxref("ErrorEvent")}}
- {{domxref("FetchEvent")}}
- {{domxref("FocusEvent")}}
+- {{domxref("FontFaceSetLoadEvent")}}
- {{domxref("FormDataEvent")}}
- {{domxref("GamepadEvent")}}
- {{domxref("HashChangeEvent")}}
@@ -45,10 +47,10 @@ slug: Web/API/Event
- {{domxref("IDBVersionChangeEvent")}}
- {{domxref("InputEvent")}}
- {{domxref("KeyboardEvent")}}
-- {{domxref("MediaStreamEvent")}}
+- {{domxref("MediaStreamEvent")}} {{Deprecated_Inline}}
- {{domxref("MessageEvent")}}
- {{domxref("MouseEvent")}}
-- {{domxref("MutationEvent")}}
+- {{domxref("MutationEvent")}} {{Deprecated_Inline}}
- {{domxref("OfflineAudioCompletionEvent")}}
- {{domxref("PageTransitionEvent")}}
- {{domxref("PaymentRequestUpdateEvent")}}
@@ -59,13 +61,12 @@ slug: Web/API/Event
- {{domxref("RTCPeerConnectionIceEvent")}}
- {{domxref("StorageEvent")}}
- {{domxref("SubmitEvent")}}
-- {{domxref("SVGEvent")}}
+- {{domxref("SVGEvent")}} {{Deprecated_Inline}}
- {{domxref("TimeEvent")}}
- {{domxref("TouchEvent")}}
- {{domxref("TrackEvent")}}
- {{domxref("TransitionEvent")}}
- {{domxref("UIEvent")}}
-- {{domxref("UserProximityEvent")}}
- {{domxref("WebGLContextEvent")}}
- {{domxref("WheelEvent")}}
@@ -74,45 +75,43 @@ slug: Web/API/Event
- {{domxref("Event.Event", "Event()")}}
- : `Event` オブジェクトを生成して、呼び出し元に返します。
-## プロパティ
+## インスタンスプロパティ
-- {{domxref("Event.bubbles")}} {{readonlyinline}}
+- {{domxref("Event.bubbles")}} {{ReadOnlyInline}}
- : 論理値で、イベントが DOM を通してバブリングするかどうかを示します。
-- {{domxref("Event.cancelable")}} {{readonlyinline}}
+- {{domxref("Event.cancelable")}} {{ReadOnlyInline}}
- : 論理値で、イベントがキャンセル可能かを示します。
-- {{domxref("Event.composed")}} {{readonlyinline}}
+- {{domxref("Event.composed")}} {{ReadOnlyInline}}
- : 論理値で、シャドウ DOM と 通常の DOM の間の境界を越えてイベントがバブリングできるかどうかを示します。
-- {{domxref("Event.currentTarget")}} {{readonlyinline}}
+- {{domxref("Event.currentTarget")}} {{ReadOnlyInline}}
- : イベントが現在登録されているターゲットへの参照。これは、現在イベントの送信先として予定されているオブジェクトです。これは*再ターゲティング*によって、途中で変更される可能性があります。
-- {{domxref("Event.defaultPrevented")}} {{readonlyinline}}
+- {{domxref("Event.defaultPrevented")}} {{ReadOnlyInline}}
- : このイベントをキャンセルするために {{domxref("event.preventDefault()")}} が呼び出されたかどうかを示します。
-- {{domxref("Event.eventPhase")}} {{readonlyinline}}
+- {{domxref("Event.eventPhase")}} {{ReadOnlyInline}}
- : イベントフローのどのフェーズで処理されているかを示します。 `NONE`, `CAPTURING_PHASE`, `AT_TARGET`, `BUBBLING_PHASE` のうちのいずれかの数値です。
- {{domxref("Event.srcElement")}} {{non-standard_inline}}
- : {{domxref("Event.target")}} の、(古いバージョンの Microsoft Internet Explorer 由来の) 標準外の別名であり、ウェブの互換性の目的で一部の他のブラウザーでも対応が始められています。
-- {{domxref("Event.target")}} {{readonlyinline}}
+- {{domxref("Event.target")}} {{ReadOnlyInline}}
- : イベントが最初に送出されたターゲットへの参照。
-- {{domxref("Event.timeStamp")}} {{readonlyinline}}
+- {{domxref("Event.timeStamp")}} {{ReadOnlyInline}}
- : イベントが生成された時刻をミリ秒単位で示します。仕様書ではこの値を元期からの経過時間としていますが、実際のブラウザーでの定義は様々です。また、値を {{domxref("DOMHighResTimeStamp")}} に変更する作業が進行中です。
-- {{domxref("Event.type")}} {{readonlyinline}}
- - : イベントの種類を識別する名前で、大文字小文字を区別しません。
+- {{domxref("Event.type")}} {{ReadOnlyInline}}
+ - : イベントの種類を識別する名前です。
### 古い標準外のプロパティ
- {{domxref("Event.cancelBubble")}} {{deprecated_inline}}
- : {{domxref("Event.stopPropagation()")}} の過去の別名であり、そちらを使用してください。イベントハンドラーから戻る前に値 `true` を設定すると、イベントの伝播を抑制します。
-- {{domxref("Event.explicitOriginalTarget")}} {{non-standard_inline}} {{readonlyinline}}
+- {{domxref("Event.explicitOriginalTarget")}} {{non-standard_inline}} {{ReadOnlyInline}}
- : イベントの明確な最初のターゲットです。
-- {{domxref("Event.originalTarget")}} {{non-standard_inline}} {{readonlyinline}}
+- {{domxref("Event.originalTarget")}} {{non-standard_inline}} {{ReadOnlyInline}}
- : イベントの再ターゲティング前の最初のターゲットです。
- {{domxref("Event.returnValue")}} {{deprecated_inline}}
- : 過去のプロパティで、既存のサイトが動作するように対応されているものです。代わりに {{domxref("Event.preventDefault()")}} および {{domxref("Event.defaultPrevented")}} を使用してください。
-- {{domxref("Event.composed", "Event.scoped")}} {{readonlyinline}} {{deprecated_inline}}
+- {{domxref("Event.composed", "Event.scoped")}} {{ReadOnlyInline}} {{deprecated_inline}}
- : 論理値で、指定されたイベントがシャドウルートを通過して標準 DOM までバブリングするかどうかを示します。代わりに {{domxref("Event.composed", "composed")}} を使用してください。
-- {{domxref("Event.srcElement")}} {{readonlyinline}} {{deprecated_inline}}
- - : (Microsoft Internet Explorer の古いバージョンからの) {{domxref("Event.target")}} の別名です。代わりに {{domxref("Event.target")}} を使用してください。
-## メソッド
+## インスタンスメソッド
- {{domxref("Event.composedPath()")}}
@@ -141,5 +140,5 @@ slug: Web/API/Event
## 関連情報
- 利用できるイベントの種類: [イベントリファレンス](/ja/docs/Web/Events)
-- [イベントターゲットの比較](/ja/docs/Web/API/Event/Comparison_of_Event_Targets) (`target` vs `currentTarget` vs `relatedTarget` vs `originalTarget`)
+- [イベントターゲットの比較](/ja/docs/Web/API/Event/Comparison_of_Event_Targets) (`target` vs. `currentTarget` vs. `relatedTarget` vs. `originalTarget`)
- [カスタムイベントの生成と発行](/ja/docs/Web/Events/Creating_and_triggering_events)
From 608acb15770b56fe8b51c66306b221a929218825 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 27 Jul 2023 22:49:27 +0900
Subject: [PATCH 018/331] =?UTF-8?q?2023/04/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/event/stoppropagation/index.md | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/files/ja/web/api/event/stoppropagation/index.md b/files/ja/web/api/event/stoppropagation/index.md
index aca09ee543361f..072a5dad133bb0 100644
--- a/files/ja/web/api/event/stoppropagation/index.md
+++ b/files/ja/web/api/event/stoppropagation/index.md
@@ -1,16 +1,19 @@
---
-title: Event.stopPropagation()
+title: "Event: stopPropagation() メソッド"
+short-title: stopPropagation()
slug: Web/API/Event/stopPropagation
+l10n:
+ sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
---
{{APIRef("DOM")}}
-**`stopPropagation()`** は {{domxref("Event")}} インターフェイスのメソッドで、キャプチャおよびバブリング段階において現在のイベントのさらなる伝播を阻止します。しかし、これは既定の動作の発生を妨げるものではありません。例えば、リンクのクリックはまだ処理されます。これらの動作を止めたい場合は、{{domxref("Event.preventDefault", "preventDefault()")}} メソッドを参照してください。また、他のイベントハンドラーへの即時伝搬も防げません。それらを止めたい場合は、{{domxref("Event.stopImmediatePropagation", "stopImmediatePropagation()")}}を参照してください。
+**`stopPropagation()`** は {{domxref("Event")}} インターフェイスのメソッドで、キャプチャおよびバブリング段階において現在のイベントのさらなる伝播を阻止します。しかし、これは既定の動作の発生を妨げるものではありません。例えば、リンクのクリックはまだ処理されます。これらの動作を止めたい場合は、{{domxref("Event.preventDefault", "preventDefault()")}} メソッドを参照してください。また、現在の要素における他のイベントハンドラーへの伝搬も防げません。それらを止めたい場合は、{{domxref("Event.stopImmediatePropagation", "stopImmediatePropagation()")}} を参照してください。
## 構文
-```js
-event.stopPropagation();
+```js-nolint
+event.stopPropagation()
```
### 引数
@@ -24,6 +27,7 @@ event.stopPropagation();
## 例
[イベントの伝播](/ja/docs/Web/API/Document_Object_Model/Examples#example_5_event_propagation) を参照してください。
+{{domxref("Event.stopImmediatePropagation", "stopImmediatePropagation()")}} の例も参照してください。
## 仕様書
From f73fdb7928ba7320a22900c51a4c3f41755739ac Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 27 Jul 2023 09:39:59 +0900
Subject: [PATCH 019/331] =?UTF-8?q?2023/07/20=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ja/web/api/event/preventdefault/index.md | 65 +++++++++----------
1 file changed, 32 insertions(+), 33 deletions(-)
diff --git a/files/ja/web/api/event/preventdefault/index.md b/files/ja/web/api/event/preventdefault/index.md
index fd7e712d0b56b8..0a456f9300dda6 100644
--- a/files/ja/web/api/event/preventdefault/index.md
+++ b/files/ja/web/api/event/preventdefault/index.md
@@ -1,6 +1,9 @@
---
-title: Event.preventDefault()
+title: "Event: preventDefault() メソッド"
+short-title: preventDefault()
slug: Web/API/Event/preventDefault
+l10n:
+ sourceCommit: 32b07aa5b6ac4799a88e7b87a4d8333643ab6427
---
{{apiref("DOM")}}
@@ -13,8 +16,8 @@ slug: Web/API/Event/preventDefault
## 構文
-```js
-event.preventDefault();
+```js-nolint
+event.preventDefault()
```
## 例
@@ -26,15 +29,15 @@ event.preventDefault();
#### JavaScript
```js
-document.querySelector("#id-checkbox").addEventListener(
- "click",
- function (event) {
- document.getElementById("output-box").innerHTML +=
- "ごめん! preventDefault()
がチェックさせません! ";
- event.preventDefault();
- },
- false,
-);
+const checkbox = document.querySelector("#id-checkbox");
+
+checkbox.addEventListener("click", checkboxClick, false);
+
+function checkboxClick(event) {
+ let warn = "preventDefault() がこのチェックを妨害しています。 ";
+ document.getElementById("output-box").innerHTML += warn;
+ event.preventDefault();
+}
```
#### HTML
@@ -60,14 +63,15 @@ document.querySelector("#id-checkbox").addEventListener(
#### HTML
-こちらがフォームです。
+下の HTML フォームはユーザーの入力をキャプチャします。
+キー入力にしか興味がないので、`autocomplete` を無効にして、ブラウザーがキャッシュした値で入力フィールドを埋めるのを防いでいます。
```html
```
@@ -89,29 +93,24 @@ document.querySelector("#id-checkbox").addEventListener(
#### JavaScript
-そして、こちらがその仕事を行う JavaScript コードです。まず、{{domxref("Element/keypress_event", "keypress")}} イベントを待ち受けします。
+そして、こちらがその仕事を行う JavaScript コードです。まず、{{domxref("Element/keydown_event", "keydown")}} イベントを待ち受けします。
```js
-var myTextbox = document.getElementById("my-textbox");
-myTextbox.addEventListener("keypress", checkName, false);
+const myTextbox = document.getElementById("my-textbox");
+myTextbox.addEventListener("keydown", checkName, false);
```
`checkName()` 関数は押されたキーを調べ、それを許可するかどうかを決定します。
```js
function checkName(evt) {
- var charCode = evt.charCode;
- if (charCode != 0) {
- if (charCode < 97 || charCode > 122) {
- evt.preventDefault();
- displayWarning(
- "小文字のみを使用してください。" +
- "\n" +
- "charCode: " +
- charCode +
- "\n",
- );
- }
+ const key = evt.key;
+ const lowerCaseAlphabet = "abcdefghijklmnopqrstuvwxyz";
+ if (!lowerCaseAlphabet.includes(key)) {
+ evt.preventDefault();
+ displayWarning(
+ "小文字のみを使用してください。\n" + `押されたキー: ${key}\n`,
+ );
}
}
```
@@ -119,21 +118,21 @@ function checkName(evt) {
`displayWarning()` 関数は、問題発生の通知を表示します。これはエレガントな関数ではありませんが、この例の目的には十分です。
```js
-var warningTimeout;
-var warningBox = document.createElement("div");
+let warningTimeout;
+const warningBox = document.createElement("div");
warningBox.className = "warning";
function displayWarning(msg) {
warningBox.innerHTML = msg;
if (document.body.contains(warningBox)) {
- window.clearTimeout(warningTimeout);
+ clearTimeout(warningTimeout);
} else {
// insert warningBox after myTextbox
myTextbox.parentNode.insertBefore(warningBox, myTextbox.nextSibling);
}
- warningTimeout = window.setTimeout(function () {
+ warningTimeout = setTimeout(() => {
warningBox.parentNode.removeChild(warningBox);
warningTimeout = -1;
}, 2000);
From ec1f983ced02e333bccd8dff85f02b4970b93761 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Thu, 27 Jul 2023 22:45:04 +0900
Subject: [PATCH 020/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../event/stopimmediatepropagation/index.md | 107 +++++++++++++++++-
1 file changed, 104 insertions(+), 3 deletions(-)
diff --git a/files/ja/web/api/event/stopimmediatepropagation/index.md b/files/ja/web/api/event/stopimmediatepropagation/index.md
index d9b7243c37696e..3666be7bfdc8c9 100644
--- a/files/ja/web/api/event/stopimmediatepropagation/index.md
+++ b/files/ja/web/api/event/stopimmediatepropagation/index.md
@@ -1,20 +1,121 @@
---
-title: Event.stopImmediatePropagation()
+title: "Event: stopImmediatePropagation() メソッド"
+short-title: stopImmediatePropagation()
slug: Web/API/Event/stopImmediatePropagation
+l10n:
+ sourceCommit: 32b07aa5b6ac4799a88e7b87a4d8333643ab6427
---
{{APIRef("DOM")}}
**`stopImmediatePropagation()`** は {{domxref("Event")}} インターフェイスのメソッドで、呼び出されている同じイベントの他のリスナーを抑止します。
-同じイベントタイプで複数のリスナーが同じ要素に装着されている場合、追加された順番に呼び出されます。もし、そのような呼び出しの最中に `stopImmediatePropagation()` が呼び出された場合、残りのリスナーは呼び出されなくなります。
+同じ要素で、同じ種類のイベントに複数のリスナーが装着されている場合、追加された順番に呼び出されます。もし、そのような呼び出しの最中に `stopImmediatePropagation()` が呼び出された場合、残りのリスナーは呼び出されなくなります。
## 構文
+```js-nolint
+event.stopImmediatePropagation()
+```
+
+## 例
+
+### イベントを停止する関数の比較
+
+下の例では、3 つの入れ子になった div の中に 3 つのボタンがあります。それぞれのボタンにはクリックイベント用に登録された 3 つのイベントリスナーがあり、それぞれの div にもクリックイベント用に登録されたイベントリスナーがあります。
+
+- 一番上のボタンは、通常のイベント伝播が可能です。
+- 中央のボタンは、最初のイベントハンドラーで `stopPropagation()` を呼び出します。
+- 一番下のボタンは、最初のイベントハンドラーで `stopImmediatePropagation()` を呼び出します。
+
+#### HTML
+
+```html
+ボタンをクリックしてください
+
+ 外側の div
+
+ 中央の div
+
+ 内側の div
+ 伝播可能
+ 伝播を停止
+ 直ちに伝播を停止
+
+
+
+
+```
+
+#### CSS
+
+```css
+div {
+ display: inline-block;
+ padding: 10px;
+ background-color: #fff;
+ border: 2px solid #000;
+ margin: 10px;
+}
+
+button {
+ width: 100px;
+ color: #008;
+ padding: 5px;
+ background-color: #fff;
+ border: 2px solid #000;
+ border-radius: 30px;
+ margin: 5px;
+}
+```
+
+#### JavaScript
+
```js
-event.stopImmediatePropagation();
+const outElem = document.querySelector("pre");
+
+/* Clear the output */
+document.addEventListener(
+ "click",
+ () => {
+ outElem.textContent = "";
+ },
+ true,
+);
+
+/* Set event listeners for the buttons */
+document.querySelectorAll("button").forEach((elem) => {
+ for (let i = 1; i <= 3; i++) {
+ elem.addEventListener("click", (evt) => {
+ /* 最初のイベントハンドラーですべての伝播を停止 */
+ if (i === 1 && elem.id) {
+ evt[elem.id]();
+ outElem.textContent += `イベント 1 のイベントハンドラーが ${elem.id}() を呼び出しました\n`;
+ }
+
+ outElem.textContent += `"${elem.textContent}" ボタンのクリックイベント ${i} が処理されました\n`;
+ });
+ }
+});
+
+/* それぞれの div にイベントリスナーを設定 */
+document
+ .querySelectorAll("div")
+ .forEach((elem) =>
+ elem.addEventListener(
+ "click",
+ (evt) =>
+ (outElem.textContent += `"${elem.firstChild.data.trim()}" でクリックイベントが処理されました\n`),
+ ),
+ );
```
+#### 結果
+
+それぞれのクリックイベントハンドラーは、呼び出されるとステータスメッセージを表示します。中央のボタンを押すと、`stopPropagation()` によって、そのボタンがクリックされたときに登録されたイベントハンドラはすべて実行されますが、その後に続くはずの div のクリックイベントハンドラーは実行されないことがわかります。しかし、一番下のボタンを押すと、`stopImmediatePropagation()` はそのイベント以降の伝播をすべて停止します。
+
+{{ EmbedLiveSample("Comparing event-stopping functions", 500, 550) }}
+
## 仕様書
{{Specifications}}
From 6ffaff3c067fdc0b8a5b598d49ffca46c4c95126 Mon Sep 17 00:00:00 2001
From: manjuu-eater <88940383+manjuu-eater@users.noreply.github.com>
Date: Sun, 24 Sep 2023 18:10:32 +0900
Subject: [PATCH 021/331] =?UTF-8?q?=E8=A8=B3=E3=81=95=E3=82=8C=E3=81=A6?=
=?UTF-8?q?=E3=81=84=E3=81=9F"in-place"=E3=82=92=E8=A8=B3=E8=AA=9E?=
=?UTF-8?q?=E8=8B=B1=E8=AA=9E=E4=BD=B5=E8=A8=98=E3=81=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reference/global_objects/array/reverse/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/files/ja/web/javascript/reference/global_objects/array/reverse/index.md b/files/ja/web/javascript/reference/global_objects/array/reverse/index.md
index d5bf92eefb4c79..39f5a599b1e5bc 100644
--- a/files/ja/web/javascript/reference/global_objects/array/reverse/index.md
+++ b/files/ja/web/javascript/reference/global_objects/array/reverse/index.md
@@ -7,7 +7,7 @@ l10n:
{{JSRef}}
-**`reverse()`** メソッドは、配列の要素を[その場](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)で反転させ、その配列への参照を返します。最初の要素が最後の要素に、最後の要素が最初の要素になります。言い換えれば、配列内の要素順序を、先に述べた方向とは逆に向かわせます。
+**`reverse()`** メソッドは、配列の要素を [in-place(その場)](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0) で反転させ、その配列への参照を返します。最初の要素が最後の要素に、最後の要素が最初の要素になります。言い換えれば、配列内の要素順序を、先に述べた方向とは逆に向かわせます。
{{EmbedInteractiveExample("pages/js/array-reverse.html")}}
@@ -19,7 +19,7 @@ reverse();
### 返値
-元の配列を反転されたものへの参照です。なお、配列は[その場](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)で反転され、コピーは作られません。
+元の配列を反転されたものへの参照です。なお、配列は [in-place(その場)](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0) で反転され、コピーは作られません。
## 解説
From 201c0c04c1ade7c598b66ad1fe580502807d499e Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Wed, 31 May 2023 00:01:03 +0900
Subject: [PATCH 022/331] =?UTF-8?q?2023/02/20=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/api/htmldlistelement/index.md | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/files/ja/web/api/htmldlistelement/index.md b/files/ja/web/api/htmldlistelement/index.md
index 2d1c62e3bec3f1..e6f80523fee900 100644
--- a/files/ja/web/api/htmldlistelement/index.md
+++ b/files/ja/web/api/htmldlistelement/index.md
@@ -1,24 +1,26 @@
---
title: HTMLDListElement
slug: Web/API/HTMLDListElement
+l10n:
+ sourceCommit: 387d0d4d8690c0d2c9db1b85eae28ffea0f3ac1f
---
{{ApiRef("HTML DOM")}}
-**`HTMLDListElement`** インターフェイスは、(継承によって使用できる通常の {{domxref("HTMLElement")}} インターフェイスのものに加えて)定義リスト要素 ({{HtmlElement("dl")}}) を操作するための特別なプロパティを提供します。
+**`HTMLDListElement`** インターフェイスは、(継承によって使用できる通常の {{domxref("HTMLElement")}} インターフェイスのものの他に)定義リスト要素 ({{HtmlElement("dl")}}) を操作するための特別なプロパティを提供します。
{{InheritanceDiagram}}
-## プロパティ
+## インスタンスプロパティ
-_親である {{domxref("HTMLElement")}} からプロパティを継承しています。_
+_親である {{domxref("HTMLElement")}} から継承したプロパティがあります。_
- {{domxref("HTMLDListElement.compact")}} {{deprecated_inline}}
- : 論理値で、リスト項目間の間隔を縮小することを示します。
-## メソッド
+## インスタンスメソッド
-_固有のメソッドはありません。親である {{domxref("HTMLElement")}} からメソッドを継承しています。_
+_固有のメソッドはありません。親である {{domxref("HTMLElement")}} から継承したメソッドがあります。_
## 仕様書
From 5336f988fb9e3753ed4e95b088e12fff057f34f9 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 18:23:24 +0900
Subject: [PATCH 023/331] =?UTF-8?q?Web/API/Web=5Fcomponents=20=E3=81=B8?=
=?UTF-8?q?=E3=81=AE=E3=83=AA=E3=83=B3=E3=82=AF=E3=82=92=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/mozilla/firefox/releases/52/index.md | 2 +-
files/ja/mozilla/firefox/releases/63/index.md | 2 +-
.../ja/orphaned/web/web_components/status_in_firefox/index.md | 2 +-
files/ja/web/api/element/slot/index.md | 2 +-
files/ja/web/api/html_dom_api/index.md | 4 ++--
files/ja/web/css/_colon_defined/index.md | 2 +-
files/ja/web/css/_colon_host/index.md | 2 +-
files/ja/web/css/_colon_host_function/index.md | 2 +-
files/ja/web/css/_colon_is/index.md | 2 +-
files/ja/web/css/_colon_where/index.md | 2 +-
files/ja/web/css/_doublecolon_slotted/index.md | 2 +-
11 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/files/ja/mozilla/firefox/releases/52/index.md b/files/ja/mozilla/firefox/releases/52/index.md
index 8fa06766651925..fe4c44ad6e83d0 100644
--- a/files/ja/mozilla/firefox/releases/52/index.md
+++ b/files/ja/mozilla/firefox/releases/52/index.md
@@ -108,7 +108,7 @@ Firefox 52 は、米国時間 2017 年 3 月 7 日にリリースされました
- `loadstart` および `loadend` イベントが {{htmlelement("img")}} 要素で発生するようになりました ([Firefox バグ 1264769](https://bugzil.la/1264769)。
- [Notifications API](/ja/docs/Web/API/Notifications_API) の {{domxref("Notification.requireInteraction")}} を実装しました ([Firefox バグ 862395](https://bugzil.la/862395))。
- {{domxref("Window.open()")}} メソッドで、`noopener` [ウィンドウ機能特性](/ja/docs/Web/API/Window/open#window_functionality_features) が使用可能になりました ([Firefox バグ 1267339](https://bugzil.la/1267339))。これは、`rel="noopener"` [リンクタイプ](/ja/docs/Web/HTML/Link_types) の機能を反映します。
-- [Web Components API](/ja/docs/Web/Web_Components) の {{domxref("CustomElementRegistry.get()")}} メソッドを実装しました ([Firefox バグ 1275838](https://bugzil.la/1275838))。
+- [Web Components API](/ja/docs/Web/API/Web_components) の {{domxref("CustomElementRegistry.get()")}} メソッドを実装しました ([Firefox バグ 1275838](https://bugzil.la/1275838))。
- [Pointer Event](/ja/docs/Web/API/Pointer_events) の {{domxref("PointerEvent.width","width")}} および {{domxref("PointerEvent.height","height")}} プロパティのデフォルト値が 1 になりました ([Firefox バグ 1304315](https://bugzil.la/1304315))。
- [最新の仕様書](https://wicg.github.io/entries-api/) における変更点を含むように、[File and Directory Entries API](/ja/docs/Web/API/File_and_Directory_Entries_API) を更新しました (詳しくは [Firefox バグ 1284987](https://bugzil.la/1284987) をご覧ください)。
- {{domxref("UIEvent")}} で定義されていた {{domxref("Event.cancelBubble", "cancelBubble")}} プロパティが、 {{domxref("Event")}} インターフェイスで定義するようになりました。詳しくは [Firefox バグ 1298970](https://bugzil.la/1298970) をご覧ください。
diff --git a/files/ja/mozilla/firefox/releases/63/index.md b/files/ja/mozilla/firefox/releases/63/index.md
index 8bb83c0cf4603b..b6c30738ffedd3 100644
--- a/files/ja/mozilla/firefox/releases/63/index.md
+++ b/files/ja/mozilla/firefox/releases/63/index.md
@@ -64,7 +64,7 @@ _変更なし。_
#### 新規 API
-- Shadow DOM ([Firefox バグ 1471947](https://bugzil.la/1471947)) および Custom Elements ([Firefox バグ 1471948](https://bugzil.la/1471948)) API をデフォルトで有効にしました。詳しくは [Web components](/ja/docs/Web/Web_Components) をご覧ください。
+- Shadow DOM ([Firefox バグ 1471947](https://bugzil.la/1471947)) および Custom Elements ([Firefox バグ 1471948](https://bugzil.la/1471948)) API をデフォルトで有効にしました。詳しくは [Web components](/ja/docs/Web/API/Web_components) をご覧ください。
- {{domxref("Media_Capabilities_API", "Media Capabilities API", "", "1")}} を実装しました ([Firefox バグ 1409664](https://bugzil.la/1409664))。
- {{domxref("Clipboard", "Async Clipboard API", "", "1")}} を実装して、デフォルトですべてのチャンネルで有効化しました。Chrome および Firefox では現在 {{domxref("Clipboard.writeText", "writeText()")}} および {{domxref("Clipboard.readText", "readText()")}} メソッドのみ実装しています。ただし、`readText()` が [ブラウザー拡張機能](/ja/docs/Mozilla/Add-ons/WebExtensions) に限り使用可能であることが Chrome とは異なります。
- {{domxref("SecurityPolicyViolationEvent")}} インターフェイスをサポートしました。{{HTTPHeader("Content-Security-Policy")}} に違反したときにイベントを送信できます ([Firefox バグ 1472661](https://bugzil.la/1472661))。
diff --git a/files/ja/orphaned/web/web_components/status_in_firefox/index.md b/files/ja/orphaned/web/web_components/status_in_firefox/index.md
index e9d163595651f1..50c307316368c9 100644
--- a/files/ja/orphaned/web/web_components/status_in_firefox/index.md
+++ b/files/ja/orphaned/web/web_components/status_in_firefox/index.md
@@ -5,6 +5,6 @@ slug: orphaned/Web/Web_Components/Status_in_Firefox
{{DefaultAPISidebar("Web Components")}}{{SeeCompatTable}}
-[Web Components](/docs/Web/Web_Components) は、とても新しい技術で、ブラウザ実装者や Web 開発者が実際に利用した経験を集めて仕様を考案しています。実装状況は変化しやすく、次々と進化していきます。この記事は、Firefox や Firefox OS で使用されている [Gecko](/docs/Mozilla/Gecko) での実装状況の一覧を示します。
+[Web Components](/docs/Web/API/Web_components) は、とても新しい技術で、ブラウザ実装者や Web 開発者が実際に利用した経験を集めて仕様を考案しています。実装状況は変化しやすく、次々と進化していきます。この記事は、Firefox や Firefox OS で使用されている [Gecko](/docs/Mozilla/Gecko) での実装状況の一覧を示します。
ネイティブサポート Firefox と Firefox OS では、以下の機能が実装されており、デフォルトで有効です:
{{HTMLElement("template")}} 今後実装予定の機能 新しい同意に基づいた Shadow DOM の実装は、2016 年 Q1 にリリース予定です。Anne と Wilson のブログ投稿に詳細が記述されています。しかし、まだ仕様について 多くの議論や課題 があり、すべてのブラウザへの実装は将来となるでしょう。 Custom elements は、最初からやり直しで、ECMAScript 6 の文法を使用してリビルドする計画 (つまり、より少ないプロトタイプを基に作成) です。Apple の Ryosuke Niwa が、実装をいくつか具体化しています。古い文法は、しばらくの間、新しい文法と共に Chrome で動作するでしょう (例えば、{{domxref("Element.attachShadow()")}} に対して {{domxref("Element.createShadowRoot()")}})、しかし、Firefox ではネイティブでは動作しないでしょう。 これらの問題について、2016 年 1 月の会議 でベンダが議論するでしょう。 放棄された機能 これらの機能は、実装の検討がされており、実験的に実装されていたものもあります。今後は改良もされず、削除されるでしょう。
HTML imports の使用は、ES6 モジュールで開発者が何ができるかを確認することは、待って欲しいです (まだ実装されていません。[Firefox バグ 568953](https://bugzil.la/568953) をご覧ください)。Firefox から削除される予定の未完了の import の実装がありました。Firefox でポリフィルを使用する Firefox でポリフィルを使用する際に考慮すべき注意事項があります:
about:config
の dom.webcomponents.enabled
設定を true
に変更して Firefox で Web Components を有効にすると、完全でないネイティブ実装が動き始め、ポリフィルが混乱する可能性があります。webcomponents.js ポリフィルを使用した Shadow DOM のポリフィルは、スタイルをカプセル化できません。そのため、スタイルは bleed through でしょう。ポリフィルを使用して構築されたサイトは、ネイティブの Shadow DOM を サポートした 環境と異なる見た目になることに注意してください。Shadow DOM のポリフィルは、機能にフックするために DOM 要素のプロトタイプをリライトするため、とても動作が遅いです (ポリフィルというよりポリリプレイスです!)。 Shadow DOM を使用する必要がない場合、webcomponents.js ポリフィルの webcomponents-lite.js バージョンを使用することをお勧めします。このバージョンは、Shadow DOM を使用しないポリフィルです。
diff --git a/files/ja/web/api/element/slot/index.md b/files/ja/web/api/element/slot/index.md
index f839c3f220e383..0ff723c19b9510 100644
--- a/files/ja/web/api/element/slot/index.md
+++ b/files/ja/web/api/element/slot/index.md
@@ -10,7 +10,7 @@ l10n:
**`slot`** は {{domxref("Element")}} インターフェイスのプロパティで、この要素が挿入されたシャドウ DOM のスロットの名前を返します。
-スロットは[ウェブコンポーネント](/ja/docs/Web/Web_Components)内のプレースホルダーで、ユーザーが独自のマークアップで埋めることができます(詳しくは、[テンプレートとスロットの使用](/ja/docs/Web/API/Web_components/Using_templates_and_slots)をご覧ください)。
+スロットは[ウェブコンポーネント](/ja/docs/Web/API/Web_components)内のプレースホルダーで、ユーザーが独自のマークアップで埋めることができます(詳しくは、[テンプレートとスロットの使用](/ja/docs/Web/API/Web_components/Using_templates_and_slots)をご覧ください)。
## 値
diff --git a/files/ja/web/api/html_dom_api/index.md b/files/ja/web/api/html_dom_api/index.md
index f807ac5c87f904..8e41c9e6a7c7e9 100644
--- a/files/ja/web/api/html_dom_api/index.md
+++ b/files/ja/web/api/html_dom_api/index.md
@@ -17,7 +17,7 @@ HTML DOM API に含まれる機能領域には、以下のようなものがあ
- HTML のメディア要素 ({{HTMLElement("audio")}} と {{HTMLElement("video")}} に接続されたメディアの管理。
- ウェブページ上のコンテンツのドラッグ&ドロップ。
- ブラウザーのナビゲーション履歴へのアクセス。
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)、{{DOMxRef("Web_Storage_API", "ウェブストレージ", "", "1")}}、{{DOMxRef("Web_Workers_API", "ウェブワーカー", "", "1")}}、{{DOMxRef("WebSockets_API", "ウェブソケット", "", "1")}}、{{DOMxRef("Server-sent_events", "サーバー側イベント", "", "1")}} などの他の API のサポートおよび接続インターフェイス。
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)、{{DOMxRef("Web_Storage_API", "ウェブストレージ", "", "1")}}、{{DOMxRef("Web_Workers_API", "ウェブワーカー", "", "1")}}、{{DOMxRef("WebSockets_API", "ウェブソケット", "", "1")}}、{{DOMxRef("Server-sent_events", "サーバー側イベント", "", "1")}} などの他の API のサポートおよび接続インターフェイス。
## HTML DOM の概念と利用方法
@@ -239,7 +239,7 @@ HTML DOM API を構成するインターフェイスの大部分は、個々の
### ウェブコンポーネントインターフェイス
-これらのインターフェイスは[ウェブコンポーネント API](/ja/docs/Web/Web_Components) で使用され、利用可能な[カスタム要素](/ja/docs/Web/API/Web_components/Using_custom_elements)を作成・管理します。
+これらのインターフェイスは[ウェブコンポーネント API](/ja/docs/Web/API/Web_components) で使用され、利用可能な[カスタム要素](/ja/docs/Web/API/Web_components/Using_custom_elements)を作成・管理します。
- {{DOMxRef("CustomElementRegistry")}}
diff --git a/files/ja/web/css/_colon_defined/index.md b/files/ja/web/css/_colon_defined/index.md
index 9f76024a80638c..3afba7167b1491 100644
--- a/files/ja/web/css/_colon_defined/index.md
+++ b/files/ja/web/css/_colon_defined/index.md
@@ -99,4 +99,4 @@ simple-custom:defined {
## 関連情報
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
diff --git a/files/ja/web/css/_colon_host/index.md b/files/ja/web/css/_colon_host/index.md
index 43e1336454539e..b03fdb567e00e1 100644
--- a/files/ja/web/css/_colon_host/index.md
+++ b/files/ja/web/css/_colon_host/index.md
@@ -68,6 +68,6 @@ style.textContent =
## 関連情報
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
- {{cssxref(":host()")}}
- {{cssxref(":host-context()")}}
diff --git a/files/ja/web/css/_colon_host_function/index.md b/files/ja/web/css/_colon_host_function/index.md
index 5e61ca70a318b7..c1fbbdf1965415 100644
--- a/files/ja/web/css/_colon_host_function/index.md
+++ b/files/ja/web/css/_colon_host_function/index.md
@@ -71,6 +71,6 @@ style.textContent =
## 関連情報
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
- {{CSSxRef(":host")}}
- {{CSSxRef(":host-context()")}}
diff --git a/files/ja/web/css/_colon_is/index.md b/files/ja/web/css/_colon_is/index.md
index d2434e84c00400..97f21a68999990 100644
--- a/files/ja/web/css/_colon_is/index.md
+++ b/files/ja/web/css/_colon_is/index.md
@@ -226,4 +226,4 @@ some-element::after {
- {{CSSxRef(":where", ":where()")}} - `:is()` と同様ですが、[詳細度](/ja/docs/Web/CSS/Specificity)が 0 です。
- [セレクターリスト](/ja/docs/Web/CSS/Selector_list)
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
diff --git a/files/ja/web/css/_colon_where/index.md b/files/ja/web/css/_colon_where/index.md
index dfa3ecd0fe5bdb..426c2ca37934dd 100644
--- a/files/ja/web/css/_colon_where/index.md
+++ b/files/ja/web/css/_colon_where/index.md
@@ -153,4 +153,4 @@ footer a {
- {{CSSxRef(":is", ":is()")}}
- [セレクターリスト](/ja/docs/Web/CSS/Selector_list)
-- [ウェブコンポーネント](/ja/docs/Web/Web_components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
diff --git a/files/ja/web/css/_doublecolon_slotted/index.md b/files/ja/web/css/_doublecolon_slotted/index.md
index 0c4254ed2a0a3e..f3de6340600cbd 100644
--- a/files/ja/web/css/_doublecolon_slotted/index.md
+++ b/files/ja/web/css/_doublecolon_slotted/index.md
@@ -96,4 +96,4 @@ customElements.define(
## 関連情報
-- [ウェブコンポーネント](/ja/docs/Web/Web_Components)
+- [ウェブコンポーネント](/ja/docs/Web/API/Web_components)
From 42dd46e34eede4a6c1fe723e7c3f6a7b0b9624d1 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 20:07:15 +0900
Subject: [PATCH 024/331] =?UTF-8?q?2023/07/04=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/glossary/binding/index.md | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 files/ja/glossary/binding/index.md
diff --git a/files/ja/glossary/binding/index.md b/files/ja/glossary/binding/index.md
new file mode 100644
index 00000000000000..1efc1aab78a15b
--- /dev/null
+++ b/files/ja/glossary/binding/index.md
@@ -0,0 +1,20 @@
+---
+title: Binding (バインド)
+slug: Glossary/Binding
+l10n:
+ sourceCommit: 1c4869cdb1a9a9c3cafba87a2cd9469591f7aa47
+---
+
+プログラミングにおいて**バインド**とは、{{glossary("identifier","識別子")}}と値の関連付けのことです。バインドは{{glossary("variable", "変数")}}だけとは限りません。例えば、関数の{{glossary("parameter", "引数")}}や {{jsxref("Statements/try...catch", "catch (e)")}} ブロックで作成されるバインドは、厳密な意味での「変数」ではありません。さらに、一部のバインドは言語によって暗黙に作成されます。例えば、 JavaScript の {{jsxref("Operators/this", "this")}} や [`new.target`](/ja/docs/Web/JavaScript/Reference/Operators/new.target) などです。
+
+バインドは代入可能であれば{{glossary("mutable", "変更可能")}}であり、そうでなければ{{glossary("immutable", "変更不可")}}です。これは、保持している値が変更不可であるという意味ではありません。
+
+バインドはよく{{glossary("scope", "スコープ")}}と関連付けられます。 JavaScript でバインドを再宣言できるかどうかは、バインドを作成するために使用された構築方法に依存します。
+
+## 関連情報
+
+- {{jsxref("Statements/var", "var")}}
+- {{jsxref("Statements/let", "let")}}
+- {{jsxref("Statements/const", "const")}}
+- {{jsxref("Statements/function", "function")}}
+- {{jsxref("Statements/class", "class")}}
From d63c1db68ab95765467208d533c7f8a3bc0097dd Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 20:09:45 +0900
Subject: [PATCH 025/331] =?UTF-8?q?2023/09/12=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../functions/arrow_functions/index.md | 542 +++++++++---------
1 file changed, 262 insertions(+), 280 deletions(-)
diff --git a/files/ja/web/javascript/reference/functions/arrow_functions/index.md b/files/ja/web/javascript/reference/functions/arrow_functions/index.md
index 2dba7e671f2f41..ab4c45f9904e6f 100644
--- a/files/ja/web/javascript/reference/functions/arrow_functions/index.md
+++ b/files/ja/web/javascript/reference/functions/arrow_functions/index.md
@@ -1,91 +1,128 @@
---
title: アロー関数式
slug: Web/JavaScript/Reference/Functions/Arrow_functions
+l10n:
+ sourceCommit: 4f86aad2b0b66c0d2041354ec81400c574ab56ca
---
{{jsSidebar("Functions")}}
-**アロー関数式**は、従来の [関数式](/ja/docs/Web/JavaScript/Reference/Operators/function)の簡潔な代替構文ですが、制限があり、すべての場面で使用することができるわけではできません。
+**アロー関数式**は、従来の[関数式](/ja/docs/Web/JavaScript/Reference/Operators/function)の簡潔な代替構文ですが、意味的な違いや意図的な使用上の制限もあります。
-*アロー関数*と*従来の関数*には違いがあり、また制限もあります。
-
-- アロー関数には、[`this`](/ja/docs/Web/JavaScript/Reference/Operators/this)、[`arguments`](/ja/docs/Web/JavaScript/Reference/Functions/arguments)、[`super`](/ja/docs/Web/JavaScript/Reference/Operators/super) への結びつけがないので、[メソッド](/ja/docs/Glossary/Method)として使用することはできません。
-- アロー関数には [`new.target`](/ja/docs/Web/JavaScript/Reference/Operators/new.target) キーワードがありません。
-- アロー関数は、[`call`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call)、[`apply`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)、[`bind`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) のような、一般に[スコープ](/ja/docs/Glossary/Scope)を確立することを前提としたメソッドには適していません。
-- アロー関数は[コンストラクター](/ja/docs/Glossary/Constructor)として使用することはできません。
-- アロー関数は本体内で [`yield`](/ja/docs/Web/JavaScript/Reference/Operators/yield) を使用することはできません。
+- アロー関数自身には [`this`](/ja/docs/Web/JavaScript/Reference/Operators/this)、[`arguments`](/ja/docs/Web/JavaScript/Reference/Functions/arguments)、[`super`](/ja/docs/Web/JavaScript/Reference/Operators/super) への{{Glossary("binding", "バインド")}}がないので、[メソッド](/ja/docs/Glossary/Method)として使用することはできません。
+- アロー関数は[コンストラクター](/ja/docs/Glossary/Constructor)として使用することはできません。 [`new`](/ja/docs/Web/JavaScript/Reference/Operators/new) をつけて呼び出すと {{jsxref("TypeError")}} が発生します。 [`new.target`](/ja/docs/Web/JavaScript/Reference/Operators/new.target) キーワードにアクセスすることもできません。
+- アロー関数は本体内で [`yield`](/ja/docs/Web/JavaScript/Reference/Operators/yield) を使用することができず、ジェネレーター関数として作成することもできません。
{{EmbedInteractiveExample("pages/js/functions-arrow.html")}}
-### 従来の関数とアロー関数の比較
+## 構文
-「従来の関数」を分解して、最もシンプルな「アロー関数」に段階的に変えていきましょう。
+```js-nolint
+() => 式
-> **メモ:** 途中の各ステップは有効な「アロー関数」です。
+引数 => 式
-```js
-// 従来の関数
-function (a){
- return a + 100;
+(引数) => 式
+
+(引数1, 引数N) => 式
+
+() => {
+ 文
+}
+
+引数 => {
+ 文
+}
+
+(引数1, 引数N) => {
+ 文
+}
+```
+
+引数内での[残余引数](/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters)、[デフォルト引数](/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters)、[分割代入](/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)には対応していますが、常に括弧が必要になります。
+
+```js-nolint
+(a, b, ...r) => 式
+(a = 400, b = 20, c) => 式
+([a, b] = [10, 20]) => 式
+({ a, b } = { a: 10, b: 20 }) => 式
+```
+
+アロー関数は、 [`async`](/ja/docs/Web/JavaScript/Reference/Statements/async_function) にすることができます。この場合は式の前に `async` キーワードを付けます。
+
+```js-nolint
+async 引数 => 式
+async (引数1, 引数2, ...引数N) => {
+ 文
}
+```
+
+### 解説
-// アロー関数に分解
+伝統的な無名関数を、最も単純なアロー関数に段階的に分解してみましょう。それぞれの段階も有効なアロー関数です。
+
+> **メモ:** 従来の関数式とアロー関数は、構文以外にも異なる点があります。次のいくつかの節で、その動作の違いを詳しく紹介します。
+
+```js-nolint
+// 従来の無名関数
+(function (a) {
+ return a + 100;
+});
// 1. "function" という語を削除し、引数と本体の開始中括弧の間に矢印を配置する
(a) => {
return a + 100;
-}
+};
-// 2. 本体の中括弧を削除と "return" という語を削除 -- return は既に含まれています。
+// 2. 本体の中括弧を削除と "return" という語を削除 — return は既に含まれています。
(a) => a + 100;
// 3. 引数の括弧を削除
a => a + 100;
```
-{ 中括弧 } と ( 括弧 ) と "return" は必要になる場合もあります。
+上の例では、引数を囲む括弧と関数本体を囲む中括弧の両方を省略することができます。ただし、省略できるのは特定の場合のみです。
-例えば、**複数の引数**や**引数なし**の場合、引数の周りの括弧を入れなおす必要があります。
+括弧を省略できるのは、関数に単一の単純な引数がある場合だけです。複数の引数がある場合、引数がない場合、デフォルト引数、分割代入、残余引数がある場合は、引数リストを括弧で囲む必要があります。
```js
-// 従来の関数
-function (a, b){
+// 従来の無名関数
+(function (a, b) {
return a + b + 100;
-}
+});
// アロー関数
(a, b) => a + b + 100;
-// 従来の関数 (引数なし)
-let a = 4;
-let b = 2;
-function (){
+const a = 4;
+const b = 2;
+
+// 従来の関数(引数なし)
+(function () {
return a + b + 100;
-}
+});
-// アロー関数 (引数なし)
-let a = 4;
-let b = 2;
+// アロー関数(引数なし)
() => a + b + 100;
```
-同様に、本文に処理の**追加の行**が必要な場合は、中括弧**に加えて "return"** を入れなおす必要があります(アロー関数は "return" する場所や返値を魔法のように推測できるわけではありません)。
+中括弧を省略できるのは、関数が直接式を返す場合だけです。本体に追加の処理がある場合は中括弧が必要となり、 `return` キーワードも必要となります。アロー関数はいつ何を返すかを推測することはできません。
```js
// 従来の関数
-function (a, b){
- let chuck = 42;
+(function (a, b) {
+ const chuck = 42;
return a + b + chuck;
-}
+});
// アロー関数
(a, b) => {
- let chuck = 42;
+ const chuck = 42;
return a + b + chuck;
-}
+};
```
-そして最後に、**名前付き関数**については、変数のようにアロー関数式を扱います。
+アロー関数は常に無名です。アロー関数自身を呼び出す必要がある場合は、代わりに名前付き関数式を使用 してください。アロー関数を変数に割り当てて、名前を持たせることもできます。
```js
// 従来の関数
@@ -94,342 +131,203 @@ function bob(a) {
}
// アロー関数
-let bob = (a) => a + 100;
+const bob2 = (a) => a + 100;
```
-## 構文
-
-### 基本的な構文
-
-引数が単一の場合。単純な式ならば return は不要です。
-
-```js
-(param) => expression;
-```
-
-引数が複数の場合は括弧が必要です。単純な式ならば return は不要です。
+### 関数の本体
-```js
-(param1, paramN) => expression;
-```
+アロー関数は、簡潔文体 (concise body) か、もしくはより一般的なブロック文体 (block body) のどちらかを使用することができます。
-複数行の文ならば、本体の中括弧と return が必要です。
+簡潔文体においては、単一の式しか記述できないので、その式が暗黙的に return される値となります。しかし、ブロック文体においては、明示的に `return` 文を使用する必要があります。
```js
-(param) => {
- let a = 1;
- return a + param;
-};
-```
-
-引数が複数の場合は括弧が必要です。複数行の文ならば、本体の中括弧と return が必要です。
+const func = (x) => x * x;
+// 簡潔構文の場合、暗黙の "return" があります
-```js
-(param1, paramN) => {
- let a = 1;
- return a + param1 + paramN;
+const func2 = (x, y) => {
+ return x + y;
};
+// ブロック文体では、明示的な "return" が必要です
```
-### 高度な構文
+簡潔文体 `(params) => { object: literal }` を使ってオブジェクトリテラルを返そうとしても、期待通りに動作しないことに注意しましょう。
-オブジェクトリテラル式を返す場合は、式の周りに括弧が必要です。
-
-```js
-(params) => ({ foo: "a" }); // オブジェクト {foo: "a"} を返す
-```
+```js-nolint example-bad
+const func = () => { foo: 1 };
+// 呼び出した func() は undefined を返す!
-[残余引数](/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters)に対応しています。
+const func2 = () => { foo: function () {} };
+// SyntaxError: function statement requires a name
-```js
-(a, b, ...r) => expression;
+const func3 = () => { foo() {} };
+// SyntaxError: Unexpected token '{'
```
-[デフォルト引数](/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters)に対応しています。
+これは、 JavaScript がアロー関数を簡潔文体とみなすのは、アローに続くトークンが左中括弧でない場合のみであるため、中括弧 ({}) 内のコードは一連の文として解釈され、 `foo` はオブジェクトリテラルのキーではなく、[ラベル](/ja/docs/Web/JavaScript/Reference/Statements/label)となります。
-```js
-(a = 400, b = 20, c) => expression;
-```
-
-引数の[分割代入](/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)に対応しています。
+これを修正するには、オブジェクトリテラルを括弧で囲んでください。
-```js
-([a, b] = [10, 20]) => a + b; // result is 30
-({ a, b } = { a: 10, b: 20 }) => a + b; // result is 30
+```js example-good
+const func = () => ({ foo: 1 });
```
-## 解説
-
-### メソッドとして使われるアロー関数
+### メソッドとしては使用不可
-前に述べたように、アロー関数式は非メソッド型の関数に最もよく合っています。これをメソッドとして使った時のことを見てみましょう。
+アロー関数式は自分自身で `this` を持たないので、メソッドではない関数にのみ使用してください。メソッドとして使用しようとするとどうなるか見てみましょう。
```js
"use strict";
-var obj = {
- // 新しいスコープを作成しない
+const obj = {
i: 10,
b: () => console.log(this.i, this),
- c: function () {
+ c() {
console.log(this.i, this);
},
};
-obj.b(); // undefined, Window {...} (or the global object) と表示
-obj.c(); // 10, Object {...} と表示
+obj.b(); // undefined, Window { /* … */ } (またはグローバルオブジェクト) と表示
+obj.c(); // 10, Object { /* … */ } と表示
```
-アロー関数は自身の `this` を持ちません。{{jsxref("Object.defineProperty()")}} を使った他の例です。
+{{jsxref("Object.defineProperty()")}} を使った他の例です。
```js
"use strict";
-var obj = {
+const obj = {
a: 10,
};
Object.defineProperty(obj, "b", {
get: () => {
- console.log(this.a, typeof this.a, this); // undefined 'undefined' Window {...} (or the global object)
- return this.a + 10; // represents global object 'Window', therefore 'this.a' returns 'undefined'
+ console.log(this.a, typeof this.a, this); // undefined 'undefined' Window { /* … */ } (またはグローバルオブジェクト)
+ return this.a + 10; // グローバルオブジェクト 'Window' を表すので、 'this.a' は 'undefined' を返す
},
});
```
-### call、apply、bind
-
-[`call`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call)、[`apply`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)、[`bind`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) の各メソッドは、アロー関数には**ふさわしくありません**。これらは異なるスコープ内でメソッドを実行できるようにするために設計されているものです。_アロー関数は、そのアロー関数が定義されているスコープに基づいて "this" を確立するからです。_
-
-[`call`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call)、[`apply`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)、[`bind`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) は、従来の関数ではそれぞれのメソッドにスコープを確立するので、期待通りに動作します。
+[クラス](/ja/docs/Web/JavaScript/Reference/Classes)の本体は `this` コンテキストを持っているので、[クラスフィールド](/ja/docs/Web/JavaScript/Reference/Classes/Public_class_fields)のようなアロー関数はクラスの `this` コンテキストを閉じ、アロー関数の本体の中の `this` はインスタンス(または[静的フィールド](/ja/docs/Web/JavaScript/Reference/Classes/static)の場合はクラス自体)を正しく参照します。しかし、これは関数自身のバインディングではなく、[クロージャ](/ja/docs/Web/JavaScript/Closures)であるため、 `this` の値が実行コンテキストによって変わることはありません。
```js
-// ----------------------
-// 従来の関数の例
-// ----------------------
-// 単純化されたオブジェクトで "this" を持つ
-var obj = {
- num: 100,
-};
-
-// "num" を window に設定し、使用されていないことを表す。
-window.num = 2020; // yikes!
-
-// 単純な従来の関数で "this" を運用する
-var add = function (a, b, c) {
- return this.num + a + b + c;
-};
-
-// call
-var result = add.call(obj, 1, 2, 3); // "obj" としてスコープを確立
-console.log(result); // result 106
-
-// apply
-const arr = [1, 2, 3];
-var result = add.apply(obj, arr); // "obj" としてスコープを確立
-console.log(result); // result 106
-
-// bind
-var result = add.bind(obj); // "obj" としてスコープを確立
-console.log(result(1, 2, 3)); // result 106
-```
-
-アロー関数では、 `add` 関数は基本的に `window` (グローバル) スコープで作成されているので、 `this` は window だと仮定されます。
-
-```js
-// ----------------------
-// アロー関数の例
-// ----------------------
-
-// 単純化されたオブジェクトで "this" を持つ
-var obj = {
- num: 100,
-};
-
-// "num" を window に設定し、どのように扱われるかを見る。
-window.num = 2020; // yikes!
-
-// アロー関数
-var add = (a, b, c) => this.num + a + b + c;
-
-// call
-console.log(add.call(obj, 1, 2, 3)); // result 2026
-
-// apply
-const arr = [1, 2, 3];
-console.log(add.apply(obj, arr)); // result 2026
+class C {
+ a = 1;
+ autoBoundMethod = () => {
+ console.log(this.a);
+ };
+}
-// bind
-const bound = add.bind(obj);
-console.log(bound(1, 2, 3)); // result 2026
+const c = new C();
+c.autoBoundMethod(); // 1
+const { autoBoundMethod } = c;
+autoBoundMethod(); // 1
+// 通常のメソッドであれば、この場合は未定義になるはずです。
```
-おそらくアロー関数を使う最大の利点は、 DOM レベルのメソッド (`setTimeout`, `setInterval`, `addEventListener`) で、通常は何らかのクロージャ、call、apply、bind を使用して、関数が適切なスコープで実行されることを確認する必要があることです。
-
-#### 従来の関数の例
+アロー関数のプロパティはよく「自動バインドメソッド」と言いますが、これは通常のメソッドと同等だからです。
```js
-var obj = {
- count: 10,
- doSomethingLater: function () {
- setTimeout(function () {
- // 関数を window スコープで実行
- this.count++;
- console.log(this.count);
- }, 300);
- },
-};
-
-obj.doSomethingLater(); // コンソールに "NaN" と表示。 "count" プロパティは window スコープではないため。
+class C {
+ a = 1;
+ constructor() {
+ this.method = this.method.bind(this);
+ }
+ method() {
+ console.log(this.a);
+ }
+}
```
-#### アロー関数の例
+> **メモ:** クラスフィールドはインスタンスで定義され、プロトタイプでは定義されません。そのため、インスタンスを作成するたびに新しい関数参照が作成され、新しいクロージャが割り当てられます。
-```js
-var obj = {
- count: 10,
- doSomethingLater: function () {
- // 従来の関数は "this" を "obj" コンテキストに結びつける
- setTimeout(() => {
- // アロー関数はそれ自身のバインディングを持たず、
- // setTimeout (関数呼び出しとして)はバインディング
- // 自体を作成しないので、従来の関数の "obj" コンテキスト
- // が中で使用されることになります。
- this.count++;
- console.log(this.count);
- }, 300);
- },
-};
-
-obj.doSomethingLater();
-```
+同様の理由で、[`call()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call)、[`apply()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)、[`bind()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) の各メソッドは、アロー関数で呼び出されても有益ではありません。アロー関数は、アロー関数が定義されているスコープに基づいて `this` の値を定義しており、関数の呼び出し方によってこの値が変わることはないからです。
-### `arguments` のバインドがない
+### arguments のバインドがない
-アロー関数は自身の [`arguments` オブジェクト](/ja/docs/Web/JavaScript/Reference/Functions/arguments)を持ちません。そのため、この例では、`arguments` は囲っているスコープでの同名変数への参照にすぎません。
+アロー関数は自身の [`arguments` オブジェクト](/ja/docs/Web/JavaScript/Reference/Functions/arguments)を持ちません。そのため、この例では、 `arguments` は囲っているスコープでの同名変数への参照にすぎません。
```js
-var arguments = [1, 2, 3];
-var arr = () => arguments[0];
-
-arr(); // 1
-
function foo(n) {
- var f = () => arguments[0] + n; // foo は arguments をバインドしている。 arguments[0] は n である
+ const f = () => arguments[0] + n; // foo は arguments をバインドしている。 arguments[0] は n である
return f();
}
foo(3); // 3 + 3 = 6
```
+> **メモ:** `arguments` という変数は[厳格モード](/ja/docs/Web/JavaScript/Reference/Strict_mode#eval_および_arguments_の単純化)では宣言できないので、上のコードは構文エラーになります。これにより、 `arguments` のスコープ効果がより理解しやすくなります。
+
多くの場合、[残余引数](/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters)が `arguments` オブジェクトの代わりに使えます。
```js
function foo(n) {
- var f = (...args) => args[0] + n;
+ const f = (...args) => args[0] + n;
return f(10);
}
foo(1); // 11
```
-### `new` 演算子の使用
+### コンストラクターとしては使用不可
-アロー関数はコンストラクターとして使用できず、`new` と共に使うとエラーが発生します。
+アロー関数はコンストラクターとして使用することができず、 [`new`](/ja/docs/Web/JavaScript/Reference/Operators/new) を付けて呼び出されるとエラーが発生します。また、 [`prototype`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function) プロパティもありません。
```js
-var Foo = () => {};
-var foo = new Foo(); // TypeError: Foo is not a constructor
+const Foo = () => {};
+const foo = new Foo(); // TypeError: Foo is not a constructor
+console.log("prototype" in Foo); // false
```
-### `prototype` プロパティの使用
-
-アロー関数には `prototype` プロパティはありません。
-
-```js
-var Foo = () => {};
-console.log(Foo.prototype); // undefined
-```
-
-### `yield` キーワードの使用
+### ジェネレーターとしては使用不可
[`yield`](/ja/docs/Web/JavaScript/Reference/Operators/yield) キーワードはアロー関数内で使用できません(内部で入れ子になった関数が許可されている場合を除く)。結果として、アロー関数はジェネレーターとして使用できません。
-### 関数の本体
-
-アロー関数は、簡潔文体 (concise body)か、もしくはより一般的なブロック文体 (block body) のどちらかを使用することができます。
-
-簡潔文体においては、単一の式しか記述できないので、その式が暗黙的に return される値となります。しかし、ブロック文体においては、自動的に return はされないので、明示的に `return` 文を使用する必要があります。
-
-```js
-var func = (x) => x * x;
-// 簡潔構文の場合、暗黙の "return" があります
-
-var func = (x, y) => {
- return x + y;
-};
-// ブロック文体では、明示的な "return" が必要です
-```
-
-### オブジェクトリテラルの返却
-
-簡潔文体 `params => {object:literal}` を使ってオブジェクトリテラルを返そうとしても、期待通りに動作しないことに注意しましょう。
-
-```js
-var func = () => { foo: 1 };
-// 呼び出した func() は undefined を返す!
-
-var func = () => { foo: function() {} };
-// SyntaxError: function 文には名前が必要
-```
-
-これは、括弧 ({}) 内のコードが文の列として構文解析されてしまっているからです(つまり、`foo` はオブジェクトリテラル内のキーでなく、ラベルとして扱われています)。
-
-オブジェクトリテラルは括弧で囲むのを忘れないでください。
-
-```js
-var func = () => ({ foo: 1 });
-```
-
-### 改行
+### アローの前の改行
アロー関数では、括弧とアロー(矢印)の間に改行を入れることができません。
-```js
-var func = (a, b, c)
+```js-nolint example-bad
+const func = (a, b, c)
=> 1;
// SyntaxError: Unexpected token '=>'
```
しかし、矢印の後に改行を入れたり、以下のように括弧や中括弧を使用して、コードがきれいで滑らかになるように修正することができます。また、引数同士の間にも改行を入れることができます。
-```js
-var func = (a, b, c) => 1;
+```js-nolint
+const func = (a, b, c) =>
+ 1;
-var func = (a, b, c) => 1;
+const func2 = (a, b, c) => (
+ 1
+);
-var func = (a, b, c) => {
+const func3 = (a, b, c) => {
return 1;
};
-var func = (a, b, c) => 1;
-
-// SyntaxError は発生しない
+const func4 = (
+ a,
+ b,
+ c,
+) => 1;
```
-### 解釈の順序
+### アロー関数の優先順位
-アロー関数のアロー (矢印) は演算子ではありませんが、アロー関数には特別な解釈ルールがあり、通常の関数とは[演算子の優先順位](/ja/docs/Web/JavaScript/Reference/Operators/Operator_precedence)の扱いが異なります。
+アロー関数のアロー(矢印)は演算子ではありませんが、アロー関数には特別な解釈ルールがあり、通常の関数とは[演算子の優先順位](/ja/docs/Web/JavaScript/Reference/Operators/Operator_precedence)の扱いが異なります。
-```js
+```js-nolint example-bad
let callback;
-callback = callback || function() {}; // ok
-
callback = callback || () => {};
// SyntaxError: invalid arrow-function arguments
+```
-callback = callback || (() => {}); // ok
+`=>` はほとんどの演算子よりも優先順位が低いので、`callback || ()` がアロー関数の引数リストとして解釈されるのを避けるために括弧が必要になります。
+
+```js example-good
+callback = callback || (() => {});
```
## 例
@@ -438,38 +336,37 @@ callback = callback || (() => {}); // ok
```js
// 空のアロー関数は undefined を返します
-let empty = () => {};
+const empty = () => {};
(() => "foobar")();
// "foobar" を返します
-// (これは、即時起動型の関数式です。)
+// (これは、即時起動型の関数式です。)
-var simple = (a) => (a > 15 ? 15 : a);
+const simple = (a) => (a > 15 ? 15 : a);
simple(16); // 15
simple(10); // 10
-let max = (a, b) => (a > b ? a : b);
+const max = (a, b) => (a > b ? a : b);
// 簡単な配列のフィルターリング、マッピング等
+const arr = [5, 6, 13, 0, 1, 18, 23];
-var arr = [5, 6, 13, 0, 1, 18, 23];
-
-var sum = arr.reduce((a, b) => a + b);
+const sum = arr.reduce((a, b) => a + b);
// 66
-var even = arr.filter((v) => v % 2 == 0);
+const even = arr.filter((v) => v % 2 === 0);
// [6, 0, 18]
-var double = arr.map((v) => v * 2);
+const double = arr.map((v) => v * 2);
// [10, 12, 26, 0, 2, 36, 46]
-// さらに簡潔な promise チェーン
+// さらに簡潔なプロミスチェーン
promise
.then((a) => {
- // ...
+ // …
})
.then((b) => {
- // ...
+ // …
});
// 見た目に解析が簡単な引数なしのアロー関数
@@ -482,6 +379,87 @@ setTimeout(() => {
}, 1);
```
+### call、apply、bind の使用
+
+[`call`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/call)、[`apply`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)、[`bind`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) は、従来の関数ではそれぞれのメソッドにスコープを確立するので、期待通りに動作します。
+
+```js
+const obj = {
+ num: 100,
+};
+
+// "num" を window に設定し、使用されていないことを表す。
+globalThis.num = 42;
+
+// 単純な従来の関数で "this" を運用する
+const add = function (a, b, c) {
+ return this.num + a + b + c;
+};
+
+console.log(add.call(obj, 1, 2, 3)); // 106
+console.log(add.apply(obj, [1, 2, 3])); // 106
+const boundAdd = add.bind(obj);
+console.log(boundAdd(1, 2, 3)); // 106
+```
+
+アロー関数では、 `add` 関数は基本的に `window` (グローバル) スコープで作成されているので、 `this` は window だと仮定されます。
+
+```js
+const obj = {
+ num: 100,
+};
+
+// "num" を window に設定し、どのように扱われるかを見る。
+globalThis.num = 42;
+
+// アロー関数
+const add = (a, b, c) => this.num + a + b + c;
+
+console.log(add.call(obj, 1, 2, 3)); // 48
+console.log(add.apply(obj, [1, 2, 3])); // 48
+const boundAdd = add.bind(obj);
+console.log(boundAdd(1, 2, 3)); // 48
+```
+
+おそらくアロー関数を使う最大の利点は、 DOM レベルのメソッド({{domxref("setTimeout()")}} や {{domxref("EventTarget/addEventListener()", "EventTarget.prototype.addEventListener()")}})で、通常は何らかのクロージャ、`call()`、`apply()`、`bind()` を使用して、関数が適切なスコープで実行されることを確認する必要があることです。
+
+従来の関数式では、このようなコードは期待通りに動作しません。
+
+```js
+const obj = {
+ count: 10,
+ doSomethingLater() {
+ setTimeout(function () {
+ // この関数は window のスコープで実行される
+ this.count++;
+ console.log(this.count);
+ }, 300);
+ },
+};
+
+obj.doSomethingLater(); // "NaN" と表示。 "count" プロパティが window のスコープにないため。
+```
+
+アロー関数を使えば、 `this` スコープをより簡単に保持することができます。
+
+```js
+const obj = {
+ count: 10,
+ doSomethingLater() {
+ // メソッドの構文で "this" を "obj" コンテキストにバインドする
+ setTimeout(() => {
+ // アロー関数は独自のバインドを行わないので、
+ // setTimeout (関数呼び出しとして)は自身へのバインドを作成せず、
+ // 外部メソッドの "obj" コンテキストが使用される。
+ this.count++;
+ console.log(this.count);
+ }, 300);
+ },
+};
+
+obj.doSomethingLater(); // logs 11
+```
+
## 仕様書
{{Specifications}}
@@ -492,4 +470,8 @@ setTimeout(() => {
## 関連情報
-- ["ES6 In Depth: Arrow functions" (hacks.mozilla.org)](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/)
+- [関数](/ja/docs/Web/JavaScript/Guide/Functions)ガイド
+- [関数](/ja/docs/Web/JavaScript/Reference/Functions)
+- {{jsxref("Statements/function", "function")}}
+- [`function` 式](/ja/docs/Web/JavaScript/Reference/Operators/function)
+- [ES6 In Depth: Arrow functions](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/) (hacks.mozilla.org, 2015)
From 14fa490d152f3cb85f7908c3e3797d1e4c10d3e9 Mon Sep 17 00:00:00 2001
From: Jason Lam
Date: Thu, 28 Sep 2023 11:04:32 +0800
Subject: [PATCH 026/331] [zh-cn]: update translation of Number.valueOf()
(#16122)
---
.../global_objects/number/valueof/index.md | 28 +++++++++++--------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/files/zh-cn/web/javascript/reference/global_objects/number/valueof/index.md b/files/zh-cn/web/javascript/reference/global_objects/number/valueof/index.md
index 669db4c252d804..44b5d9d93513b1 100644
--- a/files/zh-cn/web/javascript/reference/global_objects/number/valueof/index.md
+++ b/files/zh-cn/web/javascript/reference/global_objects/number/valueof/index.md
@@ -3,33 +3,39 @@ title: Number.prototype.valueOf()
slug: Web/JavaScript/Reference/Global_Objects/Number/valueOf
---
-{{JSRef("Global_Objects", "Number")}}
+{{JSRef}}
-## 概述
+{{jsxref("Number")}} 值的 **`valueOf()`** 方法返回该数字的值。
-**`valueOf()`** 方法返回一个被 {{jsxref("Global_Objects/Number", "Number")}} 对象包装的原始值。
+{{EmbedInteractiveExample("pages/js/number-valueof.html")}}
## 语法
-```plain
-numObj.valueOf()
+```js-nolint
+valueOf()
```
+### 参数
+
+无。
+
### 返回值
-表示指定 {{jsxref("Number")}} 对象的原始值的数字
+一个表示指定 {{jsxref("Number")}} 对象的原始值的数字。
## 描述
-该方法通常是由 JavaScript 引擎在内部隐式调用的,而不是由用户在代码中显式调用的。
+该方法通常由 JavaScript 在内部调用,而非在 Web 代码中显式调用。
## 示例
+### 使用 valueOf
+
```js
-var numObj = new Number(10);
+const numObj = new Number(10);
console.log(typeof numObj); // object
-var num = numObj.valueOf();
+const num = numObj.valueOf();
console.log(num); // 10
console.log(typeof num); // number
```
@@ -42,6 +48,6 @@ console.log(typeof num); // number
{{Compat}}
-## 相关链接
+## 参见
-- {{jsxref("Number.prototype.toSource()")}}
+- {{jsxref("Object.prototype.valueOf()")}}
From 48d69830d5a8f5d020f4026591746e18dcbdb87f Mon Sep 17 00:00:00 2001
From: A1lo
Date: Thu, 28 Sep 2023 11:51:38 +0800
Subject: [PATCH 027/331] zh-cn: init the translation of vulnerability response
(#16151)
---
.../security_vulnerability_response/index.md | 39 +++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 files/zh-cn/mdn/community/contributing/security_vulnerability_response/index.md
diff --git a/files/zh-cn/mdn/community/contributing/security_vulnerability_response/index.md b/files/zh-cn/mdn/community/contributing/security_vulnerability_response/index.md
new file mode 100644
index 00000000000000..832ca62b7aa8dd
--- /dev/null
+++ b/files/zh-cn/mdn/community/contributing/security_vulnerability_response/index.md
@@ -0,0 +1,39 @@
+---
+title: 安全漏洞响应步骤
+slug: MDN/Community/Contributing/Security_vulnerability_response
+l10n:
+ sourceCommit: aba02eadb67bbc425b4c8f3bbe9b066b6d21ea1b
+---
+
+{{MDNSidebar}}
+
+## 历史
+
+2018 年 11 月 27 日,一个 npm 安全漏洞被公布,所有(无论是直接还是间接)依赖于 [event-stream](https://snyk.io/blog/malicious-code-found-in-npm-package-event-stream) 包的用户,都会受到影响。这是一个非常有针对性的攻击,只有在安装了 Copay 比特币钱包的情况下才会激活,然后它会尝试窃取内容。
+
+我们的两个项目,即 [interactive-examples](https://github.com/mdn/interactive-examples/) 和 [BoB](https://github.com/mdn/bob/),依赖一个名为 [npm-run-all](https://www.npmjs.com/package/npm-run-all) 的 npm 包,而这个包又依赖于 event-stream 包。
+
+这意味着不仅员工面临风险,分叉这两个仓库的人也可能受到影响。值得庆幸的是,受影响的软件包维护者反应迅速,并发布了更新来解决该问题。因为我们在这些仓库中运行了 [Renovate 机器人](https://github.com/marketplace/renovate),所以自动创建了一个随时可以合并的[拉取请求](https://github.com/mdn/interactive-examples/pull/1239/)。
+
+但这只解决了问题的一部分。我们的用户仍需得到通知。
+
+## 采取的步骤
+
+项目(特别是 interactive-examples)的社区非常庞大,而且并不是每个人都活跃,但我们仍然需要一种方法来与每个人取得联系。因此,第一步是针对每个仓库打开一个议题,详细说明问题:
+
+- [interactive-examples](https://github.com/mdn/interactive-examples/issues/1242)
+- [bob](https://github.com/mdn/bob/issues/184)
+
+这本身还不够,因为用户不一定会主动监视议题。因此,我们需要查看项目的所有[分叉](https://github.com/mdn/interactive-examples/network/members)。
+
+然后,我们复制了所有这些用户的用户名,并在上述议题中提到了他们,例如通过[评论](https://github.com/mdn/interactive-examples/issues/1242#issuecomment-442110598)。
+
+从该议题收到的回复来看,这非常有效,但我们不能就这样放任不管。下一步是在每个打开的拉取请求中发布评论,通知用户存在的问题以及他们的下一步应该是什么。这是我们的回复的一个[例子](https://github.com/mdn/interactive-examples/pull/1144)。
+
+因此,我们相信我们的用户是安全的,因为我们联系了他们,而且 npm 和其他渠道也报道了这个问题。
+
+最后,我们通过官方 Twitter 账户发布了推文,以尽可能地引起人们对该问题的注意。
+
+### 总结
+
+希望此类事件会越来越少。但如果再次发生,上述内容提供了一个很好的指导方针。
From afd7e9ab308d121441c5dbbc617c84b7f503c4a6 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 24 Sep 2023 23:54:00 +0900
Subject: [PATCH 028/331] =?UTF-8?q?2023/08/04=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?=
=?UTF-8?q?=E3=81=8D=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../navigation_and_resource_timings/index.md | 399 ++++++++++++++++++
1 file changed, 399 insertions(+)
create mode 100644 files/ja/web/performance/navigation_and_resource_timings/index.md
diff --git a/files/ja/web/performance/navigation_and_resource_timings/index.md b/files/ja/web/performance/navigation_and_resource_timings/index.md
new file mode 100644
index 00000000000000..408329a9cb88d2
--- /dev/null
+++ b/files/ja/web/performance/navigation_and_resource_timings/index.md
@@ -0,0 +1,399 @@
+---
+title: ナビゲーションおよびリソースタイミング
+slug: Web/Performance/Navigation_and_resource_timings
+l10n:
+ sourceCommit: b69005a7ebb830a96a37ffcb2adf8b97f956469d
+---
+
+{{QuickLinksWithSubPages("Web/Performance")}}
+
+**ナビゲーションタイミング**は、ブラウザーによる文書ナビゲーションイベントを測定する指標です。**リソースタイミング**は、アプリケーションのリソースの読み込みに関する詳細なネットワークタイミングの測定値です。どちらも同じ読み取り専用のプロパティを提供しますが、ナビゲーションタイミングはメイン文書の時間を測定するのに対し、リソースタイミングはそのメイン文書内の呼び出されるすべての資産やリソース、およびリソースのリクエストされたリソースの時刻を提供します。
+
+下記の一般的なパフォーマンス項目は非推奨です。パフォーマンス項目 API は、ナビゲーションやリソースの読み込みプロセスに沿った時刻を指定し、測定するために提供されます。非推奨ですが、ブラウザーのすべてで対応しています。
+
+## パフォーマンスタイミング
+
+リクエストされたページの読み込みパフォーマンスを測定する JavaScript API である[パフォーマンスタイミング API](/ja/docs/Web/API/PerformanceTiming) は非推奨ですが、すべてのブラウザーで対応しています。これは[パフォーマンスナビゲーションタイミング](/ja/docs/Web/API/PerformanceNavigationTiming) API に置き換えられています。
+
+パフォーマンスタイミング API は、ページ読み込みプロセスの各ポイントにつ達したかを記述する読み取り専用の時刻をミリ秒 (ms) 単位で提供していました。下記画像に表示されているように、ナビゲーションプロセスは [`navigationStart`](/ja/docs/Web/API/PerformanceTiming/navigationStart), [`unloadEventStart`](/ja/docs/Web/API/PerformanceTiming/unloadEventStart), [`unloadEventEnd`](/ja/docs/Web/API/PerformanceTiming/unloadEventEnd), [`redirectStart`](/ja/docs/Web/API/PerformanceTiming/redirectStart), [`redirectEnd`](/ja/docs/Web/API/PerformanceTiming/redirectEnd), [`fetchStart`](/ja/docs/Web/API/PerformanceTiming/fetchStart), [`domainLookupStart`](/ja/docs/Web/API/PerformanceTiming/domainLookupStart), [`domainLookupEnd`](/ja/docs/Web/API/PerformanceTiming/domainLookupEnd), [`connectStart`](/ja/docs/Web/API/PerformanceTiming/connectStart), [`connectEnd`](/ja/docs/Web/API/PerformanceTiming/connectEnd), [`secureConnectionStart`](/ja/docs/Web/API/PerformanceTiming/secureConnectionStart), [`requestStart`](/ja/docs/Web/API/PerformanceTiming/requestStart), [`responseStart`](/ja/docs/Web/API/PerformanceTiming/responseStart), [`responseEnd`](/ja/docs/Web/API/PerformanceTiming/responseEnd), [`domLoading`](/ja/docs/Web/API/PerformanceTiming/domLoading), [`domInteractive`](/ja/docs/Web/API/PerformanceTiming/domInteractive), [`domContentLoadedEventStart`](/ja/docs/Web/API/PerformanceTiming/domContentLoadedEventStart), [`domContentLoadedEventEnd`](/ja/docs/Web/API/PerformanceTiming/domContentLoadedEventEnd), [`domComplete`](/ja/docs/Web/API/PerformanceTiming/domComplete), [`loadEventStart`](/ja/docs/Web/API/PerformanceTiming/loadEventStart), [`loadEventEnd`](/ja/docs/Web/API/PerformanceTiming/loadEventEnd) から成ります。
+
+![ナビゲーションタイミングイベント指標](screen_shot_2019-05-03_at_1.06.27_pm.png)
+
+上記の指標と少しの計算で、[最初のバイトまでの時間](/ja/docs/Glossary/Time_to_first_byte)、ページ読み込み時間、 DNS 参照、安全な接続かどうかなど、多くの重要な指標を計算することができます。
+
+すべての手順を完了するのにかかる時間を測定するのを支援するために、パフォーマンスタイミング API はナビゲーションの時刻の読み取り専用の測定値を提供します。アプリの時刻を表示し、キャプチャするには、次のように入力します。
+
+```js
+let time = window.performance.timing;
+```
+
+その結果を使用して、アプリのパフォーマンスを測定することができます。
+
+![コンソールに window.performance.timing と入力すると、 PerformanceNavigationTiming インターフェイスのすべての時刻が表示されます。](navigatortiming.png)
+
+順序は次の通りです。
+
+
+
+
+ パフォーマンスタイミング
+ 詳細
+
+
+
+
+
+ {{domxref("PerformanceTiming.navigationStart","navigationStart")}}
+
+
+ アンロードのプロンプトが同じ閲覧コンテキスト内の前回の文書で終了したとき。前回の文書がない場合、この値は PerformanceTiming.fetchStart
と同じになります。
+
+
+
+
+ {{domxref("PerformanceTiming.secureConnectionStart","secureConnectionStart")}}
+
+
+ 安全な接続のハンドシェイクを始めた時刻。そのような接続がリクエストされなかった場合、 0
を返します。
+
+
+
+
+ {{domxref("PerformanceTiming.redirectStart","redirectStart")}}
+
+
+ 最初の HTTP リダイレクトが始まった時刻。リダイレクトがない場合、またはリダイレクトのオリジンが同じでない場合、返される値は 0
です。
+
+
+
+
+ {{domxref("PerformanceTiming.redirectEnd","redirectEnd")}}
+
+
+
+ 最後の HTTP リダイレクトが完全に完了した時刻、つまり HTTP レスポンスの最後のバイトを受信した時刻です。リダイレクトがない場合、またはリダイレクトのオリジンが同じでない場合、返される値は 0
です。
+
+
+
+
+
+ {{domxref("PerformanceTiming.connectEnd","connectEnd")}}
+
+
+ 接続がネットワークで開かれた時刻。トランスポート層がエラーを報告し、接続確立が再度開始される場合は、最後の接続確立終了時刻が指定されます。持続的接続を使用している場合、値は PerformanceTiming.fetchStart
と同じになります。接続は、安全な接続ハンドシェイク、または SOCKS 認証がすべて終了した時刻で開かれたものとみなされます。
+
+
+
+
+ {{domxref("PerformanceTiming.connectStart","connectStart")}}
+
+
+ コネクションを開くためのリクエストがネットワークに送信された時刻。トランスポート層がエラーを報告し、接続確立が再度開始される場合は、最後の接続確立開始時刻が指定されます。持続的接続を使用している場合、値は PerformanceTiming.fetchStart
と同じになります。
+
+
+
+
+ {{domxref("PerformanceTiming.domainLookupEnd","domainLookupEnd")}}
+
+
+ ドメイン検索が完了した時刻。持続的接続を使用している場合、または情報がキャッシュやローカルリソースに格納されている場合、値は PerformanceTiming.fetchStart
と同じになります。
+
+
+
+
+ {{domxref("PerformanceTiming.domainLookupStart","domainLookupStart")}}
+
+
+ ドメイン検索を始めた時刻。持続的接続を使用している場合、または情報がキャッシュやローカルリソースに格納されている場合、値は PerformanceTiming.fetchStart
と同じになります。
+
+
+
+
+ {{domxref("PerformanceTiming.fetchStart","fetchStart")}}
+
+
+ ブラウザーが HTTP リクエストを使用して文書を取得する準備ができた時刻。
+ この時刻は、アプリケーションキャッシュを調べる前 です。
+
+
+
+
+ {{domxref("PerformanceTiming.requestStart","requestStart")}}
+
+
+ ブラウザーが実際の文書を取得するリクエストをサーバーまたはキャッシュから送信した時刻。リクエストの開始後にトランスポートレイヤーが失敗し、接続が再開された場合、このプロパティには新しいリクエストに対応する時刻が設定されます。
+
+
+
+
+ {{domxref("PerformanceTiming.responseStart","responseStart")}}
+
+
+ ブラウザーがレスポンスの最初のバイトを、サーバー、キャッシュ、ローカルリソースから受信した時刻。
+
+
+
+
+ {{domxref("PerformanceTiming.responseEnd","responseEnd")}}
+
+
+ ブラウザーがレスポンスの最後のバイトを受信した時刻、または、サーバー、キャッシュ、またはローカルリソースから最初に発生した場合は接続が閉じられた時刻。
+
+
+
+
+ {{domxref("PerformanceTiming.domLoading","domLoading")}}
+
+
+ パーサーが作業を始めた時刻、つまり {{domxref('Document.readyState')}} が 'loading'
に変わり、対応する {{DOMxRef("Document.readystatechange_event", "readystatechange")}} イベントが発生した時刻。
+
+
+
+
+ {{domxref("PerformanceTiming.unloadEventStart","unloadEventStart")}}
+
+
+ ウィンドウ内の前回の文書がアンロードを始めた時点を示す {{DOMxRef("Window.unload_event", "unload")}} イベントが発生した時刻。前回の文書がない場合、または前回の文書やリダイレクト先の文書が同じオリジンでない場合、返される値は 0
です。
+
+
+
+
+ {{domxref("PerformanceTiming.unloadEventEnd","unloadEventEnd")}}
+
+
+ unload
イベントハンドラーが完了したとき。前回の文書がない場合、または前回の文書やリダイレクト先の文書が同じオリジンでない場合、返される値は 0
です。
+
+
+
+
+ {{domxref("PerformanceTiming.domInteractive","domInteractive")}}
+
+
+ パーサーがメイン文書での作業を完了し、 Document.readyState
が 'interactive'
に変わり、対応する readystatechange
イベントが発生した時刻。
+
+
+
+
+ {{domxref("PerformanceTiming.domContentLoadedEventStart","domContentLoadedEventStart")}}
+
+
+ パーサーが DOMContentLoaded /code> イベントを送信する直前、つまり解釈直後に実行できるスクリプトがすべて実行された直後。
+
+
+
+
+ {{domxref("PerformanceTiming.domContentLoadedEventEnd","domContentLoadedEventEnd")}}
+
+
+ 順番があろうとなかろうと、できるだけ早く実行する必要のあるスクリプトがすべて実行された直後。
+
+
+
+
+ {{domxref("PerformanceTiming.domComplete","domComplete")}}
+
+
+ パーサーがメイン文書での作業を完了した時点、すなわち Document.readyState
が 'complete'
に変わり、対応する readystatechange /code> イベントが発生した時点。
+
+
+
+
+ {{domxref("PerformanceTiming.loadEventStart","loadEventStart")}}
+
+
+ load
イベントが現在の文書に対して送信された時刻。このイベントがまだ送信されていない場合、0
を返します。
+
+
+
+
+ {{domxref("PerformanceTiming.loadEventEnd","loadEventEnd")}}
+
+
+ load
イベントハンドラーが終了した時刻、すなわち load イベントが完全に完了した時刻です。このイベントがまだ送信されていないか、まだ完了していない場合、0
を返します。
+
+
+
+
+
+### タイミングの計算
+
+これらの値を使用して、関心のある固有のタイミングを測定することができます。
+
+```js
+const dns = time.domainLookupEnd - time.domainLookupStart;
+const tcp = time.connectEnd - time.connectStart;
+const ssl = time.requestStart - time.secureConnectionStart;
+```
+
+### 最初のバイトまでの時間
+
+[最初のバイトまでの時間](/ja/docs/Glossary/Time_to_first_byte) は、 `performanceTiming` APIが利用可能な `navigationStart` (ナビゲーションの開始)から `responseStart` (レスポンスデータの最初のバイトを受信)までの時間です。
+
+```js
+const ttfb = time.responseStart - time.navigationStart;
+```
+
+### ページ読み込み時間
+
+[ページ読み込み時間](/ja/docs/Glossary/Page_load_time) は `navigationStart` から現在の文書の load イベントが始まるまでの時間です。これらはパフォーマンスタイミング API でのみ利用可能です。
+
+```js
+let pageloadtime = time.loadEventStart - time.navigationStart;
+```
+
+### DNS 参照時間
+
+DNS 参照時間は、 [`domainLookupStart`](/ja/docs/Web/API/PerformanceResourceTiming/domainLookupStart) と [`domainLookupEnd`](/ja/docs/Web/API/PerformanceResourceTiming/domainLookupEnd) の間の時間です。これらは `performanceTiming` と `performanceNavigationTiming` API の両方で利用可能です。
+
+```js
+const dns = time.domainLookupEnd - time.domainLookupStart;
+```
+
+### TCP
+
+[TCP](/ja/docs/Glossary/TCP) のハンドシェイクにかかる時間は、接続を始めてから終わるまでの時間です。
+
+```js
+const tcp = time.connectEnd - time.connectStart;
+```
+
+### SSL ネゴシエーション
+
+[`secureConnectionStart`](/ja/docs/Web/API/PerformanceResourceTiming/secureConnectionStart) は利用できない場合は `undefined`、 [HTTPS](/ja/docs/Glossary/HTTPS) を用いない場合は `0`、利用可能で使用した場合はタイムスタンプになります。言い換えれば、安全な接続を使用した場合、 `secureConnectionStart` は[真値](/ja/docs/Glossary/Truthy)になり、 `secureConnectionStart` から `requestStart` までの時間は 0 より大きくなります。
+
+```js
+const ssl = time.requestStart - time.secureConnectionStart;
+```
+
+## パフォーマンス項目 API
+
+上記の一般的なパフォーマンスタイミングは非推奨ですが、完全に対応しています。{{domxref('PerformanceEntry', 'パフォーマンス項目 API')}} が登場し、ナビゲーションやリソースの読み込みプロセスに沿って時刻を指定したり計測したりすることができるようになりました。マークを作成することもできます。
+
+```js
+performance.getEntriesByType("navigation").forEach((navigation) => {
+ console.dir(navigation);
+});
+
+performance.getEntriesByType("resource").forEach((resource) => {
+ console.dir(resource);
+});
+
+performance.getEntriesByType("mark").forEach((mark) => {
+ console.dir(mark);
+});
+
+performance.getEntriesByType("measure").forEach((measure) => {
+ console.dir(measure);
+});
+
+performance.getEntriesByType("paint").forEach((paint) => {
+ console.dir(paint);
+});
+
+performance.getEntriesByType("frame").forEach((frame) => {
+ console.dir(frame);
+});
+```
+
+対応しているブラウザーでは、 `performance.getEntriesByType('paint')` を使用して、 `first-paint` と `first-contentful-paint` の測定値を問い合わせることができます。 `performance.getEntriesByType('navigation')` と `performance.getEntriesByType('resource')` を使用して、それぞれナビゲーションとリソースの時刻を問い合わせます。
+
+## ナビゲーションタイミング
+
+ユーザーがウェブサイトやアプリケーションをリクエストすると、[ブラウザーに表示するために](/ja/docs/Web/Performance/How_browsers_work)、ユーザーエージェントは {{glossary('DNS')}} 参照、 {{glossary('TCP handshake', 'TCP ハンドシェイク')}}、 SSL 交渉を含む一連の手順を経て、ユーザーエージェントが実際のリクエストを行い、サーバーがリクエストされた資産を返します。その後、ブラウザーは受け取ったコンテンツを解釈し、DOM、CSSOM、アクセシビリティ、レンダリングツリーを構築し、最終的にページをレンダリングします。ユーザーエージェントが文書の解釈をやめると、ユーザーエージェントは文書の準備状態を _interactive_ に設定します。解釈する必要のある遅延スクリプトがある場合は、それを実行し、[DOMContentLoaded](/ja/docs/Web/API/Document/DOMContentLoaded_event) を発行します。これで文書は読み込み後のタスクを処理できるようになり、この時点で文書は完全に読み込まれたとみなされます。
+
+```js
+const navigationTimings = performance.getEntriesByType("navigation");
+```
+
+`performance.getEntriesByType('navigation')` は、 navigation 型の [PerformanceEntry](/ja/docs/Web/API/PerformanceEntry) オブジェクトの配列を返します。
+
+![performance.getEntriesByType('navigation'); がこの文書のコンソールに入力されたときの結果。](perfgentrybytypenavigation.png)
+
+このようなタイミングから、多くのことを得ることができます。上の画像では、 _name_ プロパティを通して、時刻を計測しているファイルがこの文書化であることがわかります。 この説明の残りの部分では、以下の変数を使用します。
+
+```js
+const timing = performance.getEntriesByType("navigation")[0];
+```
+
+### プロトコル
+
+次の問い合わせを使用することで、プロトコルをチェックすることができます。
+
+```js
+const protocol = timing.nextHopProtocol;
+```
+
+リソースをフェッチするために使用したネットワークプロトコルを返します。この場合は `http/2` のために `h2` を返します。
+
+### 圧縮
+
+圧縮率を取得するには、 transferSize を decodedBodySize で割り、それを 100% から引きます。 74% 以上が節約されたことが分かります。
+
+```js
+const compressionSavings = 1 - timing.transferSize / timing.decodedBodySize;
+```
+
+次のもので計算できます。
+
+```js
+const compressionSavings = 1 - timing.encodedBodySize / timing.decodedBodySize;
+```
+
+ただし、 `transferSize` にはオーバーヘッドのバイトが含まれます。
+
+比較のためにネットワークタブを見てみると、非圧縮で 87.24KB のサイズのファイルを 22.04KB で転送しています。
+
+![ネットワークタブを介して転送されたバイトとサイズの表示](bytesdownloaded.png)
+
+これらの数値で計算すると、`1 - (22.04 / 87.24) = 0.747` という同じ結果が取得されます。ナビゲーションタイミングは、プログラムで転送のサイズと帯域幅の節約を調べる方法を提供します。
+
+これはこの単一の文書のサイズです。つまり、このリソースだけのサイズであり、すべてのリソースを合わせたサイズではないことに注意してください。しかし、所要時間、読み込むイベント、DOM 関連の時刻は、この単一の資産ではなく、ナビゲーション全体に関係しています。クライアント側のウェブアプリケーションは、転送サイズが 10000 以下、デコードする本体サイズが 30000 以下では、これよりも高速に見えるかもしれませんが、JavaScript や CSS、メディア資産が肥大化していないことを意味しているわけではありません。圧縮率を調べることは重要ですが、 DOMContentLoaded イベントが終わってから DOM が完了するまでの時間や期間も確実に調べてください。メインスレッドで JavaScript を長時間実行すると、ユーザーインターフェイスが応答しなくなる可能性があるからです。
+
+### リクエスト時間
+
+APIは、あなたが望むかもしれないすべての測定を提供するわけではありません。例えば、リクエストにかかった時間は?答えを得るために、ある測定値を使用することができます。
+
+レスポンスタイムを測定するには、レスポンス開始時刻からリクエスト開始時刻を引きます。リクエスト開始時刻は、ユーザーエージェントがサーバー、関連するアプリケーションキャッシュ、またはローカルリソースからリソースのリクエストを始める直前の時刻です。レスポンス開始時刻は、ユーザーエージェントの HTTP パーサーが、関連するアプリケーションキャッシュから、あるいはローカルリソースから、あるいはサーバーから、レスポンスの最初のバイトを受信した直後の時刻です。
+
+```js
+const request = timing.responseStart - timing.requestStart;
+```
+
+### load イベントの所要時間
+
+現在の文書の load イベントが発生する直前から、現在の文書の load イベントが完全に終了した時刻までのタイムスタンプを引くことで、 load イベントの所要時間を測定することができます。
+
+```js
+const load = timing.loadEventEnd - timing.loadEventStart;
+```
+
+### DOMContentLoaded イベント
+
+DOMContentLoaded イベントの所要時間は、ユーザーエージェントが DOMContentLoaded イベントを発行する直前の時刻値から、イベントが完全に終了した直後の時刻値を引くことによって測定されます。これを 50ms またはそれ以上に保つことで、確実にレスポンスの良いユーザーインターフェイスを保証することに役立ちます。
+
+```js
+const DOMContentLoaded =
+ timing.domContentLoadedEventEnd - timing.domContentLoadedEventStart;
+```
+
+### 所要時間
+
+所要時間があります。所要時間は [PerformanceNavigationTiming.loadEventEnd](/ja/docs/Web/API/PerformanceNavigationTiming/loadEventEnd) プロパティと [PerformanceEntry.startTime](/ja/docs/Web/API/PerformanceEntry/startTime) プロパティの差です。
+
+PerformanceNavigationTiming インターフェイスは、`navigate`、`reload`、`back_forward`、`prerender` を返すことで、計測しているナビゲーションの種類に関する情報も提供します。
+
+## リソースタイミング
+
+ナビゲーションタイミングはメインページ(一般に、他のすべての資産がリクエストされた HTML ファイル)のパフォーマンスを測定するのに対し、リソースのタイミングは個々のリソース(メインページから呼び出される資産、およびそれらのリソースがリクエストする資産)のタイミングを測定します。測定の多くは似ています。 DNS 参照、 TCP ハンドシェイク、安全な接続の開始はドメインごとに 1 回ずつ行われます。
+
+![リソースの時刻の図](resourcetiming-timestamps.jpg)
+
+主な用途は、それぞれのリソースを見ていくことです。
+
+## 関連情報
+
+- {{domxref("PerformanceNavigationTiming")}}
+- {{domxref("PerformanceResourceTiming")}},
+- {{domxref("PerformanceMark")}}
+- {{domxref("PerformanceMeasure")}}
+- {{domxref("PerformancePaintTiming")}}
From 531a09139ff5c6851fe2a924e7a52c285135ebb3 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Mon, 25 Sep 2023 00:00:41 +0900
Subject: [PATCH 029/331] =?UTF-8?q?2023/07/04=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/security/insecure_passwords/index.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/files/ja/web/security/insecure_passwords/index.md b/files/ja/web/security/insecure_passwords/index.md
index 547638a841a14c..75557f357199e4 100644
--- a/files/ja/web/security/insecure_passwords/index.md
+++ b/files/ja/web/security/insecure_passwords/index.md
@@ -1,13 +1,17 @@
---
title: 安全でないパスワード
slug: Web/Security/Insecure_passwords
+l10n:
+ sourceCommit: e74627e6fd9ba19696b918c2bdddfff8aa160787
---
+{{QuickLinksWithSubpages("/en-US/docs/Web/Security")}}
+
HTTP を通じてログインフォームを提供することは、ユーザーのパスワードを暴くための広範にわたる攻撃に対して特に危険です。ネットワークの盗聴者は、ネットワークを覗き見たり、転送によって提供されたページを変更したりしてユーザーのパスワードを盗むことができます。
-{{glossary("HTTPS")}} プロトコルは、ネットワーク上での盗聴 (機密性) や改ざん (完全性) といった脅威から、ユーザーのデータを保護できるように設計されています。ユーザーのデータを扱うウェブサイトは、ユーザーを攻撃者から守るために HTTPS を使用してください。 HTTPS を使わなければ、ユーザーの情報 (ログインの資格情報など) が盗まれるのは当たり前になってしまいます。このことを [Firesheep](https://codebutler.github.io/firesheep/) が証明したのは有名です。
+[HTTPS](/ja/docs/Glossary/HTTPS) プロトコルは、ネットワーク上での盗聴(機密性)や改ざん(完全性)といった脅威から、ユーザーのデータを保護できるように設計されています。ユーザーのデータを扱うウェブサイトは、ユーザーを攻撃者から守るために HTTPS を使用してください。 HTTPS を使わなければ、ユーザーの情報(ログインの資格情報など)が盗まれるのは当たり前になってしまいます。このことを [Firesheep](https://codebutler.github.io/firesheep/) が証明したのは有名です。
-この問題を修正するためには、 SSL/{{glossary("TLS")}} 証明書をサーバーにインストールし構成してください。様々なベンダーが無料または有料の証明書を提供しています。クラウドプラットフォームを使用しているのであれば、 HTTPS を有効にする方法を独自に持っているかもしれません。
+この問題を修正するためには、 SSL/[TLS](/ja/docs/Glossary/TLS) 証明書をサーバーにインストールし構成してください。様々なベンダーが無料または有料の証明書を提供しています。クラウドプラットフォームを使用しているのであれば、 HTTPS を有効にする方法を独自に持っているかもしれません。
## パスワードの使い回しに関するメモ
@@ -18,5 +22,3 @@ HTTP を通じてログインフォームを提供することは、ユーザー
## 関連情報
- [No More Passwords over HTTP, Please!](https://blog.mozilla.org/tanvi/2016/01/28/no-more-passwords-over-http-please/) — detailed blog post with more information, and FAQ.
-
-{{QuickLinksWithSubpages("/ja/docs/Web/Security")}}
From 61dd10032cc30a031598e7b794308ea6dc7f740d Mon Sep 17 00:00:00 2001
From: Jason Lam
Date: Thu, 28 Sep 2023 16:00:02 +0800
Subject: [PATCH 030/331] [zh-cn]: update translation of Number.toPrecision()
(#16150)
Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com>
---
.../number/toprecision/index.md | 25 +++++++++++--------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/files/zh-cn/web/javascript/reference/global_objects/number/toprecision/index.md b/files/zh-cn/web/javascript/reference/global_objects/number/toprecision/index.md
index 01416872eba79c..44f622e0f4647e 100644
--- a/files/zh-cn/web/javascript/reference/global_objects/number/toprecision/index.md
+++ b/files/zh-cn/web/javascript/reference/global_objects/number/toprecision/index.md
@@ -3,36 +3,39 @@ title: Number.prototype.toPrecision()
slug: Web/JavaScript/Reference/Global_Objects/Number/toPrecision
---
-{{JSRef("Global_Objects", "Number")}}
+{{JSRef}}
-## 概述
+{{jsxref("Number")}} 值的 **`toPrecision()`** 方法返回一个以指定精度表示该数字的字符串。
-**`toPrecision()`** 方法以指定的精度返回该数值对象的字符串表示。
+{{EmbedInteractiveExample("pages/js/number-toprecision.html")}}
## 语法
-```plain
-numObj.toPrecision(precision)
+```js-nolint
+toPrecision()
+toPrecision(precision)
```
### 参数
- `precision` {{optional_inline}}
- - : 一个用来指定有效数个数的整数。
+ - : 一个指定有效位数的整数。
### 返回值
-以定点表示法或指数表示法表示的一个数值对象的字符串表示,四舍五入到 `precision` 参数指定的显示数字位数。查看 {{jsxref("Number.prototype.toFixed()")}} 方法关于四舍五入的讨论,同样应用于 `toPrecision` 方法。
+一个以定点表示法或指数表示法表示 {{jsxref("Number")}} 对象的字符串,该字符串四舍五入到 `precision` 个有效数字。有关四舍五入的讨论,请参阅 {{jsxref("Number.prototype.toFixed()")}} 方法的描述,其也适用于 `toPrecision()`。
-如果忽略 `precision` 参数,则该方法表现类似于 {{jsxref("Number.prototype.toString()")}}。如果该参数是一个非整数值,将会向下舍入到最接近的整数。
+如果 `precision` 参数被省略,则与 {{jsxref("Number.prototype.toString()")}} 行为相同。如果 `precision` 参数不是整数,则将其四舍五入到最近的整数。
### 异常
- {{jsxref("Global_Objects/RangeError", "RangeError")}}
- - : 如果 _precison_ 参数不在 1 和 100(包括)之间,将会抛出一个 `RangeError` 。执行环境也可以支持更大或更小的范围。ECMA-262 只需要最多 21 位显示数字。
+ - : 如果 `precision` 不在 `1` 和 `100` 之间(包含两端),则抛出该错误。
## 示例
+### 使用 `toPrecision`
+
```js
let numObj = 5.123456;
@@ -48,7 +51,7 @@ console.log(numObj.toPrecision(5)); // 输出 '0.00012300'
console.log(numObj.toPrecision(2)); // 输出 '0.00012'
console.log(numObj.toPrecision(1)); // 输出 '0.0001'
-// 请注意,在某些情况下可能会返回科学计数法字符串
+// 请注意,在某些情况下可能会返回指数表示法字符串
console.log((1234.5).toPrecision(2)); // 输出 '1.2e+3'
```
@@ -60,7 +63,7 @@ console.log((1234.5).toPrecision(2)); // 输出 '1.2e+3'
{{Compat}}
-## 相关链接
+## 参见
- {{jsxref("Number.prototype.toFixed()")}}
- {{jsxref("Number.prototype.toExponential()")}}
From 3facf984e292b95735fd1abed40381f5eda21f5d Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Mon, 25 Sep 2023 09:24:39 +0900
Subject: [PATCH 031/331] =?UTF-8?q?2023/07/10=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
files/ja/web/xpath/snippets/index.md | 113 +++++++++++----------------
1 file changed, 44 insertions(+), 69 deletions(-)
diff --git a/files/ja/web/xpath/snippets/index.md b/files/ja/web/xpath/snippets/index.md
index 581f190f206fc7..08a37b86745580 100644
--- a/files/ja/web/xpath/snippets/index.md
+++ b/files/ja/web/xpath/snippets/index.md
@@ -1,9 +1,13 @@
---
title: XPath スニペット
slug: Web/XPath/Snippets
+l10n:
+ sourceCommit: b6f343538eac4a803943b4e99b0c0545b372645a
---
-この記事ではいくつか XPath コードスニペットを提供します。それは XPath 機能を JavaScript コードに公開する[DOM Level 3 XPath 仕様](http://www.w3.org/TR/DOM-Level-3-XPath/)の標準インタフェースに基づく簡単なユーティリティ関数の簡単な例です。スニペットは実際にあなた自身のコードの中で使用できる関数です。
+{{XsltSidebar}}
+
+この記事ではいくつか XPath コードスニペットを提供します。それは XPath 機能を JavaScript コードに公開する [DOM Level 3 XPath 仕様](https://www.w3.org/TR/DOM-Level-3-XPath/)の標準インタフェースに基づく簡単な**ユーティリティ関数**の簡単な例です。スニペットは実際に自身のコードの中で使用できる関数です。
### ノード指定の評価関数
@@ -12,45 +16,32 @@ slug: Web/XPath/Snippets
##### 例:ノード指定のカスタム `evaluateXPath()` ユーティリティ関数を定義する
```js
-// Evaluate an XPath expression aExpression against a given DOM node
-// or Document object (aNode), returning the results as an array
-// thanks wanderingstan at morethanwarm dot mail dot com for the
-// initial work.
+// 指定された DOM ノードまたは Document オブジェクト (aNode) に対して
+// XPath 式 aExpression を評価し、結果を配列として返します。
+// 最初の作業をしてくれた morethanwarm dot mail dot com の
+// wanderingstan に感謝します。
function evaluateXPath(aNode, aExpr) {
- var xpe = new XPathEvaluator();
- var nsResolver = xpe.createNSResolver(
- aNode.ownerDocument == null
+ const xpe = new XPathEvaluator();
+ const nsResolver = xpe.createNSResolver(
+ aNode.ownerDocument === null
? aNode.documentElement
: aNode.ownerDocument.documentElement,
);
- var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
- var found = [];
- var res;
+ const result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
+ const found = [];
+ let res;
while ((res = result.iterateNext())) found.push(res);
return found;
}
```
-この関数は **`new XPathEvaluator()`** コンストラクタを使用していますが、Firefox、Chrome、Opera、Safari ではサポートされているものの、Edge または Internet Explorer ではサポートされていません。Edge または Internet Explorer のユーザーがアクセスできる Web ドキュメント内のスクリプトは、 **`new XPathEvaluator()`** の呼び出しを次のフラグメントに置き換える必要があります。
-
-```js
-// XPathEvaluator is implemented on objects that implement Document
-var xpe = aNode.ownerDocument || aNode;
-```
-
-その場合、[XPathNSResolver](/ja/docs/Web/API/document/createNSResolver)の作成は次のように単純化できます。
+ただし、`createNSResolver` は、XPath 式の名前空間接頭辞が問い合わせる文書の名前空間接頭辞と一致する(かつ既定の名前空間が使用されていない (回避策については [document.createNSResolver](/ja/docs/Web/API/Document/createNSResolver) を参照))ことが確認されている場合にのみ使用する必要があります。それ以外の場合は、XPathNSResolver の独自の実装を提供する必要があります。
-```js
-var nsResolver = xpe.createNSResolver(xpe.documentElement);
-```
-
-ただし、`createNSResolver`は、XPath 式の名前空間プレフィックスが問い合わせる文書の名前空間プレフィックスと一致する(かつデフォルトの名前空間が使用されていない(回避策については[document.createNSResolver](/ja/docs/Web/API/document/createNSResolver)を参照))ことが確認されている場合にのみ使用する必要があります。それ以外の場合は、XPathNSResolver の独自の実装を提供する必要があります。
-
-[XMLHttpRequest](/ja/docs/Web/API/XMLHttpRequest)を使用してローカルまたはリモートの XML ファイルを DOM ツリー([XML のパースとシリアライズ](/ja/docs/Parsing_and_serializing_XML)を参照)に読み込む場合、`evaluateXPath()`の最初の引数は`req.responseXML`である必要があります。
+[XMLHttpRequest](/ja/docs/Web/API/XMLHttpRequest) を使用してローカルまたはリモートの XML ファイルを DOM ツリー([XML の解釈とシリアライズ](/ja/docs/Web/Guide/Parsing_and_serializing_XML)を参照)に読み込む場合、`evaluateXPath()`の最初の引数は`req.responseXML`である必要があります。
#### 使用例
-次の XML ドキュメント([DOM ツリーの作成方法](/ja/docs/How_to_create_a_DOM_tree)と[XML のパースとシリアライズ](/ja/docs/Parsing_and_serializing_XML)も参照してください)があるとします。
+次の XML ドキュメント([DOM ツリーの作成方法](/ja/docs/Web/API/Document_object_model/How_to_create_a_DOM_tree)と[XML の解釈とシリアライズ](/ja/docs/Web/Guide/Parsing_and_serializing_XML)も参照してください)があるとします。
##### 例: カスタム `evaluateXPath()` ユーティリティ関数と一緒に使用する XML 文書
@@ -70,15 +61,15 @@ var nsResolver = xpe.createNSResolver(xpe.documentElement);
```
-XPath 式を使用してドキュメントを「照会」できるようになりました。 DOM ツリーを眺めることでも同様の結果が得られますが、XPath 式を使用する方がはるかに高速で強力です。id 属性に頼ることができるのであれば、`document.getElementById()`はまだ強力ですが、XPath ほど強力ではありません。下記は用例です。
+XPath 式を使用して文書を「照会」できるようになりました。 DOM ツリーを眺めることでも同様の結果が得られますが、 XPath 式を使用する方がはるかに高速で強力です。id 属性に頼ることができるのであれば、 `document.getElementById()` はまだ強力ですが、 XPath ほど強力ではありません。下記は用例です。
##### 例: カスタムの `evaluateXPath()` ユーティリティ関数がある JavaScript コード
```js
// display the last names of all people in the doc
-var results = evaluateXPath(people, "//person/@last-name");
-for (var i in results)
- alert("Person #" + i + " has the last name " + results[i].value);
+let results = evaluateXPath(people, "//person/@last-name");
+for (const i in results)
+ console.log(`Person #${i} has the last name ${results[i].value}`);
// get the 2nd person node
results = evaluateXPath(people, "/people/person[2]");
@@ -88,37 +79,36 @@ results = evaluateXPath(people, "//person[address/@city='denver']");
// get all the addresses that have "south" in the street name
results = evaluateXPath(people, "//address[contains(@street, 'south')]");
-alert(results.length);
+console.log(results.length);
```
### docEvaluateArray
-以下は、ネームスペースリゾルバなどの特別な必要性に関わらず、XPath の結果を配列に取得(順序づけ)する簡単なユーティリティ関数です。そうでない場合は、[`document.evaluate()`](/ja/docs/Web/API/document/evaluate)のより複雑な構文は避けてください [`XPathResult`](/ja/docs/Web/API/XPathResult)の特別なイテレータ(代わりに配列を返す)を使用する必要があります。
+以下の例は、名前空間リゾルバーなどの特別な必要があるかどうかに関係なく、XPath の結果を配列に(順序付きで)取得する単純なユーティリティ関数です。これは、 [`document.evaluate()`](/ja/docs/Web/API/Document/evaluate) の複雑な構文が要求されない場合や、 [`XPathResult`](/ja/docs/Web/API/XPathResult) において(代わりに配列を返すことで)特別なイテレーターを使わなければならない状況を避けることができます。
##### 例: シンプルな `docEvaluateArray()` ユーティリティ関数を定義する
```js
// Example usage:
-// var els = docEvaluateArray('//a');
-// alert(els[0].nodeName); // gives 'A' in HTML document with at least one link
+// const els = docEvaluateArray('//a');
+// console.log(els[0].nodeName); // gives 'A' in HTML document with at least one link
function docEvaluateArray(expr, doc, context, resolver) {
- var i,
- result,
- a = [];
+ let i;
+ const a = [];
doc = doc || (context ? context.ownerDocument : document);
resolver = resolver || null;
context = context || doc;
- result = doc.evaluate(
+ const result = doc.evaluate(
expr,
context,
resolver,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null,
);
- for (i = 0; i < result.snapshotLength; i++) {
- a[i] = result.snapshotItem(i);
+ for (let i = 0; i < result.snapshotLength; i++) {
+ a.push(result.snapshotItem(i));
}
return a;
}
@@ -126,14 +116,14 @@ function docEvaluateArray(expr, doc, context, resolver) {
### getXPathForElement
-次の関数は、要素と XML 文書を渡して、その要素につながる一意の文字列 XPath 式を検索することを可能にします。
+次の関数により、要素と XML 文書を渡して、その要素につながる一意の文字列 XPath 式を検索することができます。
##### 例: `getXPathForElement()` ユーティリティ関数を定義する
```js
function getXPathForElement(el, xml) {
- var xpath = "";
- var pos, tempitem2;
+ let xpath = "";
+ let pos, tempitem2;
while (el !== xml.documentElement) {
pos = 0;
@@ -146,40 +136,25 @@ function getXPathForElement(el, xml) {
tempitem2 = tempitem2.previousSibling;
}
- xpath =
- "*[name()='" +
- el.nodeName +
- "' and namespace-uri()='" +
- (el.namespaceURI === null ? "" : el.namespaceURI) +
- "'][" +
- pos +
- "]" +
- "/" +
- xpath;
+ xpath = `*[name()='${el.nodeName}' and namespace-uri()='${
+ el.namespaceURI ?? ""
+ }'][${pos}]/${xpath}`;
el = el.parentNode;
}
- xpath =
- "/*" +
- "[name()='" +
- xml.documentElement.nodeName +
- "' and namespace-uri()='" +
- (el.namespaceURI === null ? "" : el.namespaceURI) +
- "']" +
- "/" +
- xpath;
+ xpath = `/*[name()='${xml.documentElement.nodeName}' and namespace-uri()='${
+ el.namespaceURI ?? ""
+ }']/${xpath}`;
xpath = xpath.replace(/\/$/, "");
return xpath;
}
```
-### 関連資料
+### 資料
- [XPath](/ja/docs/Web/XPath)
-- [Forum discussion on this topic](http://forums.mozillazine.org/viewtopic.php?t=229106)
-
-## 合わせてお読みください
+- [このトピックのフォーラムでの議論](https://forums.mozillazine.org/viewtopic.php?t=229106)
-- [JavaScript で XPath を使用する](/ja/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript)
+## 関連情報
-{{QuickLinksWithSubpages("/ja/docs/Web/XPath")}}
+- [JavaScript での XPath の使用](/ja/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript)
From e7023eabb4fb6e5790603d32f4756ca1c5d63afb Mon Sep 17 00:00:00 2001
From: Jason Lam
Date: Thu, 28 Sep 2023 23:04:16 +0800
Subject: [PATCH 032/331] [zh-cn]: update translation of
Number.toLocaleString() (#16149)
Co-authored-by: A1lo
---
.../number/tolocalestring/index.md | 38 +++++--------------
1 file changed, 10 insertions(+), 28 deletions(-)
diff --git a/files/zh-cn/web/javascript/reference/global_objects/number/tolocalestring/index.md b/files/zh-cn/web/javascript/reference/global_objects/number/tolocalestring/index.md
index c220712757d61e..46c050ebb5750d 100644
--- a/files/zh-cn/web/javascript/reference/global_objects/number/tolocalestring/index.md
+++ b/files/zh-cn/web/javascript/reference/global_objects/number/tolocalestring/index.md
@@ -5,7 +5,9 @@ slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
{{JSRef}}
-**`toLocaleString()`** 方法返回这个数字在特定语言环境下的表示字符串。在使用具有 [`Intl.NumberFormat` API](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) 支持的实现时,此方法仅仅简单调用了 `Intl.NumberFormat`。
+{{jsxref("Number")}} 值的 **`toLocaleString()`** 方法返回这个数字特定于语言环境的表示字符串。在具有 [`Intl.NumberFormat` API](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) 支持的实现中,此方法仅仅简单调用了 `Intl.NumberFormat`。
+
+当格式化大量数字时,最好创建一个 {{jsxref("Intl.NumberFormat")}} 对象,并使用其提供的 {{jsxref("Intl/NumberFormat/format", "format()")}} 方法。
{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}
@@ -21,7 +23,7 @@ toLocaleString(locales, options)
`locales` 和 `options` 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。
-在使用具有 [`Intl.NumberFormat` API](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) 支持的实现时,这些参数与 [`Intl.NumberFormat()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) 构造器的参数相同。不支持 `Intl.NumberFormat` 时,会忽略参数,使得使用的区域设置和返回的字符串格式完全由实现决定。
+在使用具有 [`Intl.NumberFormat` API](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) 支持的实现时,这些参数与 [`Intl.NumberFormat()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) 构造函数的参数相同。不支持 `Intl.NumberFormat` 时,会忽略参数,使得使用的区域设置和返回的字符串格式完全由实现决定。
- `locales` {{optional_inline}}
@@ -33,7 +35,7 @@ toLocaleString(locales, options)
- : 调整输出格式的对象。与 `Intl.NumberFormat()` 构造函数的 [`options`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options) 参数相同。
- 在无 `Intl.NumberFormat` 支持的实现中,这个参数是忽略的。
+ 在无 `Intl.NumberFormat` 支持的实现中,这个参数是被忽略的。
请查阅 [`Intl.NumberFormat()` 构造函数](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)以了解这些参数的详细信息,以及如何使用它们。
@@ -43,10 +45,6 @@ toLocaleString(locales, options)
在使用 `Intl.NumberFormat` 的实现中,这与 `new Intl.NumberFormat(locales, options).format(number)` 调用等价。
-## 性能
-
-当格式化非常多的数字时,最好创建一个 {{jsxref("Intl.NumberFormat")}} 对象,并且使用其 {{jsxref("Intl/NumberFormat/format", "format")}} 属性提供的方法。
-
## 示例
### 使用 toLocaleString()
@@ -56,39 +54,23 @@ toLocaleString(locales, options)
```js
const number = 3500;
-console.log(number.toLocaleString()); // Displays "3,500" if in U.S. English locale
+console.log(number.toLocaleString()); // "3,500",如果区域设置为美国英语
```
-### 检查 `locales` 和 `options` 参数的支持
+### 检查 locales 和 options 参数的支持
-并不是所有实现都需要支持 ECMA-402 标准(国际化 API)。如果浏览器不支持该标准,则参数 `locales` 和 `options` 参数必须都要忽略掉。可以依靠使用非法参数时规定抛出的 {{jsxref("Global_Objects/RangeError", "RangeError")}} 异常来检测支持的情况:
+`locales` 和 `options` 参数可能不被所有实现支持,因为国际化 API 的支持是可选的,一些系统可能没有必要的数据。对于没有国际化支持的实现,`toLocaleString()` 总是使用系统的区域设置,这可能不是你想要的。因为任何支持 `locales` 和 `options` 参数的实现必须支持 {{jsxref("Intl")}} API,你可以检查后者的存在来确定是否支持:
```js
function toLocaleStringSupportsLocales() {
- const number = 0;
- try {
- number.toLocaleString("i");
- } catch (e) {
- return e.name === "RangeError";
- }
- return false;
-}
-```
-
-早于 ES5.1 的实现中,携带非法参数调用 `toLocaleString` 不需要抛出范围异常。在所有主机环境下,包括那些支持比 ed 5.1 还早的 ECMA-262 的环境,都能有效检测的方法是直接检测 ECMA-402 中的其他特性,它指定 `Number.prototype.toLocaleString` 需要支持地区选项:
-
-```js
-function toLocaleStringSupportsOptions() {
- return !!(
+ return (
typeof Intl === "object" &&
- Intl &&
+ !!Intl &&
typeof Intl.NumberFormat === "function"
);
}
```
-它测试全局的 `Intl` 对象,检测它不是 `null` 并且有 `NumberFormat` 的方法。
-
### 使用 locales
这个示例展示了不同地区数字格式的差异。为了设置你的应用程序界面下使用的语言格式,请确保使用 `locales` 参数指定了使用的语言(可能还有一些备用语言):
From 641eae193865e1e7b00f1efa09a70f0a859f7e19 Mon Sep 17 00:00:00 2001
From: Daniel Vaquero <48688355+daniel-vaquero@users.noreply.github.com>
Date: Thu, 28 Sep 2023 18:50:31 +0200
Subject: [PATCH 033/331] Spanish Typo (#16186)
Grammar correction: conexines -> conexiones
---
files/es/web/http/headers/strict-transport-security/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/files/es/web/http/headers/strict-transport-security/index.md b/files/es/web/http/headers/strict-transport-security/index.md
index 24174b146baf4e..fd44344cb2145c 100644
--- a/files/es/web/http/headers/strict-transport-security/index.md
+++ b/files/es/web/http/headers/strict-transport-security/index.md
@@ -36,7 +36,7 @@ Esto habilita el potencial ataque man-in-the-middle, donde el redireccionamiento
El encabezado HTTP Strict Transport Security permite a un sitio web informar al navegador que nunca cargue el sitio usando HTTP y que debe automáticamente convertir todos los intentos de acceso HTTP a HTTPS.
-> **Nota:** El encabezado `Strict-Transport-Security` es **ignorado** por el navegador cuando el sitio es accedido usando HTTP; esto es porque un atacante podría interceptar las conexines HTTP e inyectar el encabezado o removerlo. Cuando el sitio es accedido a través de HTTPS con un certificado sin errores, el navegador sabe que el sitio es capaz de usar HTTPS y cumple con lo indicado en el encabezado `Strict-Transport-Security`.
+> **Nota:** El encabezado `Strict-Transport-Security` es **ignorado** por el navegador cuando el sitio es accedido usando HTTP; esto es porque un atacante podría interceptar las conexiones HTTP e inyectar el encabezado o removerlo. Cuando el sitio es accedido a través de HTTPS con un certificado sin errores, el navegador sabe que el sitio es capaz de usar HTTPS y cumple con lo indicado en el encabezado `Strict-Transport-Security`.
### Un escenario de ejemplo
From 383ff94552a654616b8f5d24417532ac87f47545 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 19:22:10 +0900
Subject: [PATCH 034/331] [ko]: add index.md for `web/glossary/cryptography`
(#15790)
[add]: add index.md for web/glossary/cryptography
---
files/ko/glossary/cryptography/index.md | 29 +++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 files/ko/glossary/cryptography/index.md
diff --git a/files/ko/glossary/cryptography/index.md b/files/ko/glossary/cryptography/index.md
new file mode 100644
index 00000000000000..6b79146a538e7f
--- /dev/null
+++ b/files/ko/glossary/cryptography/index.md
@@ -0,0 +1,29 @@
+---
+title: 암호화 기법 (Cryptography)
+slug: Glossary/Cryptography
+l10n:
+ sourceCommit: 0025477aa4af0321b4c1e3e60c8f6bca08983a60
+---
+
+{{GlossarySidebar}}
+
+**암호화 기법** 또는 암호학은 메시지를 안전하게 인코딩하고 전송하는 방법을 연구하는 과학입니다. 암호학은 안전하지 않은 환경에서 메시지를 인코딩 및 디코딩하는 데 사용되는 알고리즘과 해당 애플리케이션을 설계하고 연구합니다.
+
+암호학은 **데이터 기밀성** 뿐만 아니라 **식별**, **인증**, **부인 방지** 및 **데이터 무결성**도 처리합니다. 따라서 **암호화 시스템**이라는 맥락에서 암호화 방법의 사용법도 연구합니다.
+
+## 같이 보기
+
+- 위키백과의 [암호학](https://en.wikipedia.org/wiki/Cryptography)
+- [MDN 웹 문서 용어사전](/ko/docs/Glossary)
+
+ - {{Glossary("Block cipher mode of operation", "블록 암호 운용 방식")}}
+ - {{Glossary("Cipher", "암호")}}
+ - {{Glossary("Ciphertext", "암호문")}}
+ - {{Glossary("Cipher suite", "암호화 스위트")}}
+ - {{Glossary("Cryptanalysis", "암호 해독")}}
+ - {{Glossary("Decryption", "복호화")}}
+ - {{Glossary("Encryption", "암호화")}}
+ - {{Glossary("Key", "키")}}
+ - {{Glossary("Plaintext", "평문")}}
+ - {{Glossary("Public-key cryptography", "공개키 암호화")}}
+ - {{Glossary("Symmetric-key cryptography", "대칭키 암호화")}}
From 0443b59fc3e3be6a1bceb7fccbc88a1826860d87 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 19:23:22 +0900
Subject: [PATCH 035/331] [ko]: add index.md for `web/glossary/closure`
(#15820)
[add]: add index.md for web/glossary/closure
---
files/ko/glossary/closure/index.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 files/ko/glossary/closure/index.md
diff --git a/files/ko/glossary/closure/index.md b/files/ko/glossary/closure/index.md
new file mode 100644
index 00000000000000..fdffb47da9926d
--- /dev/null
+++ b/files/ko/glossary/closure/index.md
@@ -0,0 +1,15 @@
+---
+title: 클로저 (Closure)
+slug: Glossary/Closure
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+실행의 **{{glossary("scope", "범위")}}**를 정의하는 바인딩입니다. {{glossary("JavaScript")}}에서, **{{glossary("function","함수")}}**는 클로저 문맥을 생성합니다.
+
+## 같이 보기
+
+- 위키백과의 [클로저](https://en.wikipedia.org/wiki/Closure_%28computer_programming%29)
+- MDN의 [클로저](/ko/docs/Web/JavaScript/Closures)
From 58473a6ca10a935cf2762c9c7e4373822aa89c69 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 19:36:58 +0900
Subject: [PATCH 036/331] [ko]: add index.md for `web/glossary/conditional`
(#15849)
* [add]: add index.md for web/glossary/conditional
* Update files/ko/glossary/conditional/index.md
---------
Co-authored-by: Yeji Choi <61399588+yechoi42@users.noreply.github.com>
---
files/ko/glossary/conditional/index.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 files/ko/glossary/conditional/index.md
diff --git a/files/ko/glossary/conditional/index.md b/files/ko/glossary/conditional/index.md
new file mode 100644
index 00000000000000..c1cfdf31f708bc
--- /dev/null
+++ b/files/ko/glossary/conditional/index.md
@@ -0,0 +1,19 @@
+---
+title: 조건 (Conditional)
+slug: Glossary/Conditional
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**조건**은 조건의 완료되었는지 아닌지에 따라 정상적인 코드 실행을 중단하거나 변경할 수 있는 규칙의 집합입니다.
+
+특정 조건을 만족하게 되면, 하나 이상의 명령이 실행됩니다. 그렇지 않다면, 또 다른 명령이 실행됩니다. 조건이 아직 만족하지 않는 상태 동안 명령어 또는 명령어 세트의 실행을 반복하는 것도 가능합니다.
+
+## 같이 보기
+
+- 위키백과의 [조건문](https://en.wikipedia.org/wiki/Exception_handling#Condition_systems)
+- MDN의 [제어 흐름](/ko/docs/Glossary/Control_flow)
+- [코드에서 결정하기 — 조건절](/ko/docs/Learn/JavaScript/Building_blocks/conditionals)
+- MDN의 [JavaScript의 제어 흐름 및 오류 처리](/ko/docs/Web/JavaScript/Guide/Control_flow_and_error_handling)
From fdd01d372363fbc6416dc930ae9ab2eeacf30f69 Mon Sep 17 00:00:00 2001
From: hanyujie2002
Date: Fri, 29 Sep 2023 18:39:31 +0800
Subject: [PATCH 037/331] zh-cn: init translation of performance/image (#16039)
Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com>
---
.../learn/performance/multimedia/index.md | 151 ++++++++++++++++++
1 file changed, 151 insertions(+)
create mode 100644 files/zh-cn/learn/performance/multimedia/index.md
diff --git a/files/zh-cn/learn/performance/multimedia/index.md b/files/zh-cn/learn/performance/multimedia/index.md
new file mode 100644
index 00000000000000..b294cccfab85c2
--- /dev/null
+++ b/files/zh-cn/learn/performance/multimedia/index.md
@@ -0,0 +1,151 @@
+---
+title: 多媒体:图片
+slug: Learn/Performance/Multimedia
+---
+
+{{LearnSidebar}}{{PreviousMenuNext("Learn/Performance/measuring_performance", "Learn/Performance/video", "Learn/Performance")}}
+
+媒体,即图片和视频,占据了平均网站下载字节的 70% 以上。从下载性能的角度来看,消除媒体和减少文件大小是最容易解决的问题。本文将介绍优化图像和视频以改善网页性能的方法。
+
+
+
+
+ 前提:
+
+ 基本的计算机操作能力,已安装基本软件 ,以及基本的客户端 Web 技术知识 。
+
+
+
+ 目标:
+
+ 了解各种图像格式、它们对性能的影响,以及如何减少图像对页面整体加载时间的影响。
+
+
+
+
+
+> **备注:** 这是对 Web 上多媒体传输进行优化的概要介绍,只涵盖了一般原理和技术。如需更深入的指南,请参阅 。
+
+## 为何优化多媒体?
+
+对于一般网站而言,[其带宽的 51% 来自图像,其次是视频占 25%](https://discuss.httparchive.org/t/state-of-the-web-top-image-optimization-strategies/1367),因此可以说处理和优化多媒体内容非常重要。
+
+你需要考虑数据使用情况。许多人使用的是有限流量套餐,甚至是按使用量付费,每兆字节都要付费。这不仅仅是新兴市场的问题。截至 2018 年,[英国仍有 24% 的用户使用按使用量付费](https://www.ofcom.org.uk/__data/assets/pdf_file/0021/113169/Technology-Tracker-H1-2018-data-tables.pdf)。
+
+你还需要考虑内存问题,因为许多移动设备的 RAM 有限。请记住,当图像下载后,它们需要存储在内存中。
+
+## 优化图像传递
+
+尽管图像下载是带宽消耗最大的部分,但其对[感知性能](/zh-CN/docs/Learn/Performance/Perceived_performance)的影响远低于许多人的预期(主要是因为页面文本内容可以立即下载,用户可以在图像到达时看到它们被渲染)。然而,为了提供良好的用户体验,访问者仍然应尽快看到图像。
+
+### 加载策略
+
+对于大多数网站来说,最大的改进之一是[延迟加载](/zh-CN/docs/Web/Performance/Lazy_loading)可视区域以下的图像,而不是在初始页面加载时,无论访客是否滚动查看,都下载所有这些内容。许多 JavaScript 库可以为你实现此功能,例如 [lazysizes](https://github.com/aFarkas/lazysizes),浏览器供应商目前正在开发一种原生的 `lazyload` 属性,目前处于实验阶段。
+
+除了加载一部分图像之外,接下来你应该考虑图像本身的格式:
+
+- 你是否加载了最优的文件格式?
+- 你是否对图像进行了良好的压缩?
+- 你是否加载了正确的尺寸?
+
+#### 最优格式
+
+最优的文件格式通常取决于图像的特点。
+
+> **备注:** 有关图像类型的一般信息,请参阅[图像文件类型和格式指南](/zh-CN/docs/Web/Media/Formats/Image_types)。
+
+[SVG](/zh-CN/docs/Web/Media/Formats/Image_types#svg_可缩放矢量图形) 格式更适合颜色较少且不太逼真的照片的图像。这需要源文件以矢量图形格式提供。如果这样的图像仅以位图形式存在,则应选择 [PNG](/zh-CN/docs/Web/Media/Formats/Image_types#png_便携式网络图形) 作为后备格式。这种类型的图案示例是徽标、插图、图表或图标(注意:SVG 比图标字体好得多!)。两种格式都支持透明度。
+
+PNG 可以以三种不同的输出组合进行保存:
+
+- 24 位色 + 8 位透明度——提供全色准确性和平滑透明度,以牺牲大小为代价。你可能希望为了避免这种组合,而选择 WebP(见下文)。
+- 8 位色 + 8 位透明度——提供不超过 255 种颜色,但保持平滑的透明度。大小不太大。这些可能是你想要的 PNG。
+- 8 位色 + 1 位透明度——提供不超过 255 种颜色,并仅为每个像素提供无或完全透明度,这使透明边界看起来生硬并且有锯齿。尺寸小,但视觉保真度付出了代价。
+
+优化 SVG 的一个不错的在线工具是 [SVGOMG](https://jakearchibald.github.io/svgomg/)。对于 PNG,有 [ImageOptim 在线](https://imageoptim.com/online)或 [Squoosh](https://squoosh.app/) 这几种工具。
+
+对于不具有透明度的摄影素材,有更广泛的格式可供选择。如果要谨慎行事,那么你应该选择压缩良好的**渐进式 JPEG**。渐进式 JPEG 与普通 JPEG 不同,它们是渐进式显示的(因此得名),这意味着用户先看到的是一个低分辨率的图像版本,随着图像下载而逐渐清晰,而不是图像以全分辨率从上到下加载,或者只有在完全下载后才显示。对于这些图片,一个好的压缩工具是 MozJPEG,可用于在线图像优化工具 [Squoosh](https://squoosh.app/) 中,75% 的质量设置就能够得到优秀的结果。
+
+其他格式在压缩方面改进了 JPEG,但并非所有浏览器都支持:
+
+- [WebP](/zh-CN/docs/Web/Media/Formats/Image_types#webp_图像)——既适用于图像又适用于动图的绝佳选择。WebP 提供比 PNG 或 JPEG 更好的压缩,支持更高的色深、动画帧和透明度等(但不支持渐进式显示)。除具有 Big Sur 或更早版本的 macOS 桌面版 Safari 14 外,所有主流浏览器都支持它。
+
+ > **备注:** 尽管 Apple [宣布在 Safari 14 中支持 WebP](https://developer.apple.com/videos/play/wwdc2020/10663/?time=1174),但在 Safari 版本 16.0 之前,`.webp` 图像无法在早于 Big Sur 版本的 macOS 桌面版本上正常显示,而 iOS 14 上的 Safari *却能*正常显示 `.webp` 图像。
+
+- [AVIF](/zh-CN/docs/Web/Media/Formats/Image_types#avif_图像)——由于其是高性能和免版税的图像格式(甚至比 WebP 更高效),它是用于图像和动图的不错选择(尽管不太广泛)。它现在受 Chrome、Opera 和 Firefox 的支持。另请参阅[将以前的图像格式转换为 AVIF 的在线工具](https://avif.io/)。
+- **JPEG2000**——曾经是 JPEG 的继任者,但仅受 Safari 支持。也不支持渐进式显示。
+
+鉴于 JPEG-XR 和 JPEG2000 的支持范围很窄,并且还要考虑解码成本,JPEG 的唯一真正竞争对手是 WebP。这就是为什么你也可以以该格式提供图像。这可以通过使用配备了 [type 属性](/zh-CN/docs/Web/HTML/Element/picture#type_属性)的 `` 元素和 `` 元素来完成。
+
+如果所有这些对你的团队来说听起来有点复杂或感觉有太多的工作要做,那么还有一些在线服务,你可以将其用作图像 CDN,它们将根据请求图像的设备或浏览器类型自动提供正确的图像格式。这其中最大的就是 [Cloudinary](https://cloudinary.com/blog/make_all_images_on_your_website_responsive_in_3_easy_steps) 和 [Image Engine](https://imageengine.io/)。
+
+最后,如果你想在页面中包含动图,那么请知道 Safari 允许在 ` ` 和 `` 元素中使用视频文件。这样,你还可以为所有其他现代浏览器添加**动态 WebP**。
+
+```html
+
+
+
+
+
+```
+
+#### 提供最佳尺寸
+
+在图像传输中,采用“一刀切”的方法不会得到最佳结果,这意味着对于较小的屏幕,你希望提供更低分辨率的图像,而对于较大的屏幕则相反。此外,你还希望为那些具有高 DPI 屏幕(例如“Retina”)的设备提供更高分辨率的图像。因此,除了创建许多中间图像变体之外,你还需要一种方法将正确的文件提供给正确的浏览器。这就是你需要通过使用 [media](/zh-CN/docs/Web/HTML/Element/source#media) 和/或 [sizes](/zh-CN/docs/Web/HTML/Element/source#sizes) 属性来升级你的 `` 和 `` 元素的地方。有关如何组合所有这些属性的详细文章可以在[这里](https://www.smashingmagazine.com/2014/05/responsive-images-done-right-guide-picture-srcset/)找到。
+
+关于高 DPI 屏幕,有两个有趣的效果需要记住:
+
+- 在高 DPI 屏幕上,人眼对压缩伪影的敏感度要低得多,这意味着对于这些屏幕上的图像,你可以超过通常的压缩程度。
+- [只有很少的人能够察觉到超过 2 倍 DPI 的分辨率增加](https://observablehq.com/@eeeps/visual-acuity-and-device-pixel-ratio),这意味着你不需要提供超过 2 倍分辨率的图像。
+
+#### 控制下载图像的优先级(和顺序)
+
+将最重要的图像优先展示给访问者会提供更好的感知性能。
+
+首先,检查你的内容图像是否使用 ` ` 或 `` 元素,并且你的背景图像是否在 CSS 中使用 `background-image` 定义——` ` 元素中引用的图像比背景图像具有更高的加载优先级。
+
+其次,通过采用优先级提示(Priority Hints),你可以进一步控制优先级,只需在图像标签中添加 `fetchPriority` 属性即可。图像优先级提示的一个示例用例是幻灯片轮播,其中第一张图像的优先级高于后续的图像。
+
+### 渲染策略:在加载图像时避免卡顿
+
+由于图像是异步加载的,并且在第一次绘制后继续加载,如果在加载之前未定义其尺寸,它们可能会导致页面内容重新布局。例如,当图像加载时,文本会被推到页面下方。因此,你需要设置 `width` 和 `height` 属性,以便浏览器可以在布局中为它们预留空间。
+
+当在 HTML {{htmlelement("img")}} 元素上包含图像的 `width` 和 `height` 属性时,浏览器可以在图像加载之前计算图像的宽高比。在图像下载和绘制到屏幕时,这个宽高比用于预留显示图像所需的空间,从而减少或甚至防止布局变化。减少布局变化是良好用户体验和 web 性能的重要组成部分。
+
+浏览器在解析 HTML 时开始渲染内容,通常在下载所有资源(包括图像)之前。包括尺寸使浏览器可以为每个图像预留一个正确尺寸的占位框,以便在首次渲染页面时显示图像。
+
+![两个截图,第一个没有图像但预留了空间,第二个显示了加载到预留空间的图像。](ar-guide.jpg)
+
+没有 `width` 和 `height` 属性,将不会创建占位空间,导致页面在渲染后加载图片时出现明显的{{glossary('jank', '卡顿')}}或布局移动。页面的重新布局和重绘是性能和可用性问题。
+
+在响应式设计中,当容器比图片更窄时,通常使用以下 CSS 代码来防止图片溢出容器:
+
+```css
+img {
+ max-width: 100%;
+ height: auto;
+}
+```
+
+虽然在响应式布局中很有用,但如果不包括宽度和高度信息,就会导致卡顿。如果在解析 ` ` 元素时没有提供高度信息,则在图片加载之前,此 CSS 实际上将高度设置为 0。当页面在初始显示到屏幕后加载图片时,页面会重新布局和重绘,为新确定的高度创建空间,从而导致布局移动。
+
+浏览器在实际加载图像之前有一种调整图像大小的机制。当 ` `、`` 或 ` ` 元素设置了 `width` 和 `height` 属性时,它的宽高比会在加载前计算出来,并使用提供的尺寸提供给浏览器。
+
+接着,根据宽高比计算出图片的高度,并将正确的尺寸赋给 ` ` 元素。这样做的好处是,当图片加载时,就不会出现之前提到的卡顿,或者即使列出的尺寸不太精确,卡顿程度也会降到最低。
+
+宽高比仅在图片加载时用于保留空间。一旦图片加载完成,将使用加载的图片的实际宽高比,而不是属性中的宽高比。这确保即使属性尺寸不准确,图片也会以正确的宽高比显示。
+
+虽然上个十年的开发者最佳实践可能建议省略 HTML {{htmlelement("img")}} 上的 `width` 和 `height` 属性,但由于宽高比映射,包含这两个属性被认为是开发者的最佳实践。
+
+对于任何背景图片,很重要的是设置 `background-color` 值,以便在图片加载之前,任何叠加在上面的内容仍然可读。
+
+## 结论
+
+本节我们学习了图像优化的方法。你已经大概掌握了如何优化占一般网站带宽总量一半的图像。但这只是影响用户带宽和页面加载速度的媒体类型之一。接下来,我们要看看视频优化,它可以解决带宽消耗的另外 20%。
+
+{{PreviousMenuNext("Learn/Performance/measuring_performance", "Learn/Performance/video", "Learn/Performance")}}
From eecefd004604fba220d23917dcd0a7e98d7e46bb Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 19:42:51 +0900
Subject: [PATCH 038/331] [ko]: add index.md for `web/glossary/delta` (#15870)
[add]: add index.md for web/glossary/delta
---
files/ko/glossary/delta/index.md | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 files/ko/glossary/delta/index.md
diff --git a/files/ko/glossary/delta/index.md b/files/ko/glossary/delta/index.md
new file mode 100644
index 00000000000000..670fd7d9c12b6f
--- /dev/null
+++ b/files/ko/glossary/delta/index.md
@@ -0,0 +1,32 @@
+---
+title: 델타 (Delta)
+slug: Glossary/Delta
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**델타**라는 용어는 두 값 또는 상태 간의 차이를 나타냅니다.
+
+이름은 로마 알파벳의 문자 'D'에 해당하는 그리스 문자 Δ (델타)에서 유래되었습니다. 'D'는 'difference'의 약칭으로 문자 Δ를 사용하는 것을 의미합니다.
+
+'델타'라는 용어는 물리적 또는 가상 객체의 속도, 위치 또는 가속도 변화를 전달할 때 일반적으로 사용됩니다. 음파의 크기나 주파수의 변화를 설명할 때도 사용됩니다.
+
+예를 들어, 화면의 객체가 왼쪽에서 오른쪽으로 얼마나 멀리 이동하는지 설명할 때, 'delta x' 또는 'Δx'라는 용어를 사용할 수 있습니다.
+
+마찬가지로, 'X'의 새 값과 이전 값이 주어지면, 다음과 같이 델타를 계산할 수 있습니다.
+
+```js
+let deltaX = newX - oldX;
+```
+
+더 일반적으로는, 델타를 수신하고 이를 사용하여 저장된 이전 조건을 업데이트합니다.
+
+```js
+let newX = oldX + deltaX;
+```
+
+## 같이 보기
+
+- 마우스 휠 이벤트 (예를 들어, {{domxref("WheelEvent")}}는 {{domxref("WheelEvent.deltaX", "deltaX")}}, {{domxref("WheelEvent.deltaY", "deltaY")}} 및 {{domxref("WheelEvent.deltaZ", "deltaZ")}} 속성에서 마지막 이벤트 이후 휠이 이동한 거리를 제공합니다)
From c70dd490963821978b44d0373e7f0e7d79159c98 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 19:48:08 +0900
Subject: [PATCH 039/331] [ko]: add index.md for `web/glossary/dtls` (#15892)
[add]: add index.md for web/glossary/dtls
---
files/ko/glossary/dtls/index.md | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 files/ko/glossary/dtls/index.md
diff --git a/files/ko/glossary/dtls/index.md b/files/ko/glossary/dtls/index.md
new file mode 100644
index 00000000000000..ab4668433a5398
--- /dev/null
+++ b/files/ko/glossary/dtls/index.md
@@ -0,0 +1,29 @@
+---
+title: 데이터그램 전송 계층 보안 (Datagram Transport Layer Security, DTLS)
+slug: Glossary/DTLS
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**데이터그램 전송 계층 보안** (**DTLS**)은 데이터그램 기반 통신을 보호하는 데 사용되는 프로토콜입니다. DTLS은 스트림 중심의 전송 계층 보안 ({{Glossary("TLS")}})을 기반으로 하며, 유사한 수준의 보안을 제공합니다. 데이터그램 프로토콜로서, DTLS는 메시지 전달 순서를 보장하지 않으며, 메시지 전달도 전혀 보장하지 않습니다. 그러나, DTLS는 특히 오버헤드가 낮아지고 대기 시간이 줄어드는 데 있어 데이터그램 프로토콜의 이점도 얻습니다.
+
+이런 기능은 DTLS가 사용되는 가장 일반적인 분야 중 하나인 {{Glossary("WebRTC")}}에 특히 유용합니다. 모든 WebRTC 관련 프로토콜({{Glossary("SCTP")}}, {{Glossary("RTP", "SRTP")}}, 및 {{Glossary("STUN")}})은 DTLS를 사용하여 통신을 암호화해야 합니다.
+
+## 같이 보기
+
+- 위키백과의 [데이터그램 전송 계층 보안](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security)
+- 명세서:
+
+ - {{RFC(9147, "The Datagram Transport Layer Security (DTLS) Protocol Version 1.3")}}
+ - {{RFC(6347, "Datagram Transport Layer Security Version 1.2")}}
+
+- 관련 명세
+
+ - {{RFC(5763, "Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using DTLS")}}
+ - {{RFC(5764, "DTLS Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)")}}
+ - {{RFC(6083, "DTLS for Stream Control Transmission Protocol (SCTP)")}}
+ - {{RFC(8261, "Datagram Transport Layer Security (DTLS) Encapsulation of SCTP Packets")}}
+ - {{RFC(7350, "Datagram Transport Layer Security (DTLS) as Transport for Session Traversal Utilities for NAT (STUN)")}}
+ - {{RFC(7925, "TLS / DTLS Profiles for the Internet of Things")}}
From 4f6673a5f190350b3369e4b3bf8e774c2962c3a4 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 20:03:07 +0900
Subject: [PATCH 040/331] [ko]: add index.md for `web/glossary/dominator`
(#15908)
[add]: add index.md for web/glossary/dominator
---
files/ko/glossary/dominator/index.md | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 files/ko/glossary/dominator/index.md
diff --git a/files/ko/glossary/dominator/index.md b/files/ko/glossary/dominator/index.md
new file mode 100644
index 00000000000000..72a7116226f513
--- /dev/null
+++ b/files/ko/glossary/dominator/index.md
@@ -0,0 +1,18 @@
+---
+title: 지배자 (Dominator)
+slug: Glossary/Dominator
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+그래프 이론에서, 루트 노드에서 노드 B까지 모든 경로가 A를 통과하면 노드 A가 노드 B를 지배합니다.
+
+이 개념은 A를 통해서만 B에 접근할 수 있다는 것을 의미하므로 {{Glossary("가비지 컬렉션")}}에 중요한 개념입니다. 따라서 가비지 컬렉터가 A에 도달할 수 없고 회수하기에 적합하다고 판단하면, B 또한 도달할 수 없고, 회수에 적합하다고 판단합니다. 따라서 A가 지배하는 객체는 A가 가지고 있는 크기(A 자체가 해제될 경우 해제될 수 있는 총 메모리 양)에 포함됩니다.
+
+## 같이 보기
+
+- 위키백과의 [지배자]()
+- [지배자](https://firefox-source-docs.mozilla.org/devtools-user/memory/dominators/index.html)
+- [가비지 컬렉션](/ko/docs/Web/JavaScript/Memory_management#garbage_collection)
From 7986eac812765d321622d0cbbc829d528a55de80 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Fri, 29 Sep 2023 20:05:29 +0900
Subject: [PATCH 041/331] [ko]: add index.md for `web/glossary/encapsulation`
(#15932)
[add]: add index.md for web/glossary/encapsulation
---
files/ko/glossary/encapsulation/index.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 files/ko/glossary/encapsulation/index.md
diff --git a/files/ko/glossary/encapsulation/index.md b/files/ko/glossary/encapsulation/index.md
new file mode 100644
index 00000000000000..83bf4cb361d89d
--- /dev/null
+++ b/files/ko/glossary/encapsulation/index.md
@@ -0,0 +1,14 @@
+---
+title: 캡슐화 (Encapsulation)
+slug: Glossary/Encapsulation
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+캡슐화는 데이터와 {{glossary("function","함수")}}를 하나의 컴포넌트(예, {{glossary("class", "클래스")}})로 압축하고, 그 다음에 해당 컴포넌트에 대한 접근을 제어하여 {{glossary("object", "객체")}}에서 '블랙박스'를 만듭니다. 이 때문에, 해당 클래스의 사용자는 숨겨진 구현이 아닌 해당 인터페이스(즉, 클래스 외부에 노출된 데이터 및 함수)만 알면 됩니다.
+
+## 같이 보기
+
+- 위키백과의 [캡슐화]()
From 3c3954febd3ebf562cd69cee3b90189a83b3de65 Mon Sep 17 00:00:00 2001
From: Jason Ren <40999116+jasonren0403@users.noreply.github.com>
Date: Fri, 29 Sep 2023 19:06:00 +0800
Subject: [PATCH 042/331] [zh-cn]: update 'Keyed collections' (#16174)
Co-authored-by: A1lo
---
.../guide/keyed_collections/index.md | 109 ++++++++++--------
1 file changed, 59 insertions(+), 50 deletions(-)
diff --git a/files/zh-cn/web/javascript/guide/keyed_collections/index.md b/files/zh-cn/web/javascript/guide/keyed_collections/index.md
index 247b85fa5bd70c..8e66b83c21d52c 100644
--- a/files/zh-cn/web/javascript/guide/keyed_collections/index.md
+++ b/files/zh-cn/web/javascript/guide/keyed_collections/index.md
@@ -1,33 +1,36 @@
---
title: 带键的集合
slug: Web/JavaScript/Guide/Keyed_collections
+l10n:
+ sourceCommit: 4f86aad2b0b66c0d2041354ec81400c574ab56ca
---
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Indexed_Collections", "Web/JavaScript/Guide/Working_with_objects")}}
-这一章介绍由 key 值标记的数据容器;Map 和 Set 对象承载的数据元素可以按照插入时的顺序被迭代遍历。
+本章将介绍由键索引的数据集合;`Map` 和 `Set` 对象包含可按插入顺序迭代的元素。
-## 映射
+## Map
-### `Map`对象
+### Map 对象
-ECMAScript 2015 引入了一个新的数据结构来将一个值映射到另一个值。一个{{jsxref("Map")}}对象就是一个简单的键值对映射集合,可以按照数据插入时的顺序遍历所有的元素。
+{{jsxref("Map")}} 对象就是一个简单的键/值对映射集合,可以按照数据插入时的顺序遍历所有的元素。
-下面的代码演示了使用`Map`进行的一些基本操作。请参考{{jsxref("Map")}}以获取更多的样例和完整的 API。你可以使用{{jsxref("Statements/for...of","for...of")}}循环来得到所有的`[key, value]`。
+下面的代码演示了使用 `Map` 进行的一些基本操作。请参考 {{jsxref("Map")}} 以获取更多的样例和完整的 API。你可以使用 {{jsxref("Statements/for...of","for...of")}} 循环来在每一次迭代中得到 `[key, value]` 数组。
```js
-var sayings = new Map();
+const sayings = new Map();
sayings.set("dog", "woof");
sayings.set("cat", "meow");
sayings.set("elephant", "toot");
sayings.size; // 3
+sayings.get("dog"); // woof
sayings.get("fox"); // undefined
sayings.has("bird"); // false
sayings.delete("dog");
sayings.has("dog"); // false
-for (var [key, value] of sayings) {
- console.log(key + " goes " + value);
+for (const [key, value] of sayings) {
+ console.log(`${key} goes ${value}`);
}
// "cat goes meow"
// "elephant goes toot"
@@ -36,59 +39,60 @@ sayings.clear();
sayings.size; // 0
```
-### `Object`和`Map`的比较
+### Object 和 Map 的比较
-一般地,{{jsxref("Object", "objects", "", 1)}}会被用于将字符串类型映射到数值。`Object`允许设置键值对、根据键获取值、删除键、检测某个键是否存在。而`Map`具有更多的优势。
+一般地,{{jsxref("Object", "object", "", 1)}} 会被用于将字符串类型映射到值。`Object` 允许设置键值对、根据键获取值、删除键、检测某个键是否存在。不过,`Map` 对象还有一些优点,可以更好地应用于映射关系表示中。
-- `Object` 的键均为 `String` 类型,在 `Map` 里键可以是任意类型。
-- 必须手动计算`Object`的尺寸,但是可以很容易地获取使用`Map`的尺寸。
-- `Map`的遍历遵循元素的插入顺序。
-- `Object`有原型,所以映射中有一些缺省的键。(可以用 `map = Object.create(null) 回避`)。
+- `Object` 的键均为[字符串](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String)或 [Symbol](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol) 类型,在 `Map` 里键可以是任意类型。
+- 必须手动计算 `Object` 的大小,但是可以很容易地获取 `Map` 的大小(`size`)。
+- `Map` 的遍历遵循元素的插入顺序。
+- `Object` 有原型,所以映射中有一些缺省的键。(可以用 `map = Object.create(null)` 回避)。
-这三条提示可以帮你决定用`Map`还是`Object`:
+这三条提示可以帮你决定用 `Map` 还是 `Object`:
-- 如果键在运行时才能知道,或者所有的键类型相同,所有的值类型相同,那就使用`Map`。
-- 如果需要将原始值存储为键,则使用`Map`,因为`Object`将每个键视为字符串,不管它是一个数字值、布尔值还是任何其他原始值。
-- 如果需要对个别元素进行操作,使用`Object`。
+- 如果键在运行时才能知道,或者所有的键类型相同,所有的值类型相同,那就使用 `Map`。
+- 如果需要将原始值存储为键,则使用 `Map`,因为 `Object` 将每个键视为字符串,不管它是一个数字值、布尔值还是任何其他原始值。
+- 如果存在需要对个别元素进行操作的逻辑,使用 `Object`。
-### `WeakMap`对象
+### WeakMap 对象
-{{jsxref("WeakMap")}}对象也是键值对的集合。它的**键必须是对象类型**,值可以是任意类型。它的键被弱保持,也就是说,当其键所指对象没有其他地方引用的时候,它会被 GC 回收掉。`WeakMap`提供的接口与`Map`相同。
+{{jsxref("WeakMap")}} 是键/值对的集合,其键必须是对象或[非注册符号](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol#全局共享的_symbol),其值为任意 [JavaScript 类型](/zh-CN/docs/Web/JavaScript/Data_structures),并且不会对其键创建强引用。也就是说,一个对象作为键出现在 `WeakMap` 中并不会阻止该对象被垃圾回收。一旦作为键的对象被收集,其在任何 `WeakMap` 中的相应值也会被垃圾收集,只要它们没有在其他地方被强引用。唯一可用作 `WeakMap` 键的原始类型类型是 symbol,更具体地说,是[非注册 symbol](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol#全局共享的_symbol),因为非注册 symbol 保证是唯一的,并且不能被重新创建。
-与`Map`对象不同的是,`WeakMap`的键是不可枚举的。不提供列出其键的方法。列表是否存在取决于垃圾回收器的状态,是不可预知的。
+`WeakMap` API 与 `Map` API 基本相同。不过,`WeakMap` 不允许观察其键的有效性,这也是它不允许枚举的原因。因此,没有任何方法可以获取 `WeakMap` 中的键的列表。如果有的话,该列表将取决于垃圾回收的状态,从而引入非确定性。
-可以在"Why *Weak*Map?"{{jsxref("WeakMap")}}查看更多信息和示例。
+可以在 {{jsxref("WeakMap")}} 参考页的“为什么使用 WeakMap”小节查看更多信息和示例。
-`WeakMap`对象的一个用例是存储一个对象的私有数据或隐藏实施细节。Nick Fitzgerald 的博文["Hiding Implementation Details with ECMAScript 6 WeakMaps"](http://fitzgeraldnick.com/weblog/53/)提供了一个例子。对象内部的私有数据和方法被存储在`WeakMap`类型的`privates`变量中。所有暴露出的原型和情况都是公开的,而其他内容都是外界不可访问的,因为模块并未导出`privates`对象。
+`WeakMap` 对象的一个用例是存储一个对象的私有数据或隐藏实现细节。Nick Fitzgerald 的博文[“使用 ECMAScript 6 WeakMap 隐藏实现细节”](https://fitzgeraldnick.com/2014/01/13/hiding-implementation-details-with-e6-weakmaps.html)提供了一个例子。对象内部的私有数据和方法被存储在 `WeakMap` 类型的 `privates` 变量中。所有暴露出的原型和实例都是公开的,而其他内容都是外界不可访问的,因为模块并未导出 `privates` 对象。
```js
const privates = new WeakMap();
function Public() {
const me = {
- // Private data goes here
+ // 这里是私有数据
};
privates.set(this, me);
}
Public.prototype.method = function () {
const me = privates.get(this);
- // Do stuff with private data in `me`...
+ // 处理 `me` 中的私有数据
+ // …
};
module.exports = Public;
```
-## 集合
+## Set
-### `Set`对象
+### Set 对象
-{{jsxref("Set")}}对象是一组值的集合,这些值是不重复的,可以按照添加顺序来遍历。
+{{jsxref("Set")}} 对象是一组唯一值的集合,可以按照添加顺序来遍历。`Set` 中的值只能出现一次;它在集合 `Set` 中是唯一的。
-这里演示了`Set`的基本操作,更多示例和完整 API 可以参考{{jsxref("Set")}}。
+以下代码演示了 `Set` 的基本操作,更多示例和完整 API 可以参考 {{jsxref("Set")}}。
```js
-var mySet = new Set();
+const mySet = new Set();
mySet.add(1);
mySet.add("some text");
mySet.add("foo");
@@ -97,14 +101,18 @@ mySet.has(1); // true
mySet.delete("foo");
mySet.size; // 2
-for (let item of mySet) console.log(item);
+for (const item of mySet) {
+ console.log(item);
+}
// 1
// "some text"
```
-### 数组和集合的转换
+### 数组和 Set 之间的转换
+
+可以使用 {{jsxref("Array.from")}} 或[展开语法](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax)来完成集合到数组的转换。同样,`Set` 的构造函数接受数组作为参数,可以完成从 `Array` 到 `Set` 的转换。
-可以使用{{jsxref("Array.from")}}或[展开操作符](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_operator)来完成集合到数组的转换。同样,`Set`的构造器接受数组作为参数,可以完成从`Array`到`Set`的转换。需要重申的是,`Set`对象中的值不重复,所以数组转换为集合时,所有重复值将会被删除。
+> **备注:** `Set` 对象存储*唯一值*,所以数组转换为 Set 时,任何重复值将会被删除!
```js
Array.from(mySet);
@@ -113,32 +121,33 @@ Array.from(mySet);
mySet2 = new Set([1, 2, 3, 4]);
```
-### `Array`和`Set`的对比
+### 数组和 Set 的对比
-一般情况下,在 JavaScript 中使用数组来存储一组元素,而新的集合对象有这些优势:
+一般情况下,在 JavaScript 中使用数组来存储一组元素,而新的 `Set` 对象有这些优势:
-- 数组中用于判断元素是否存在的{{jsxref("Array.indexOf", "indexOf")}} 函数效率低下。
-- `Set`对象允许根据值删除元素,而数组中必须使用基于下标的 splice 方法。
-- 数组的`indexOf`方法无法找到{{jsxref("NaN")}}值。
-- `Set`对象存储不重复的值,所以不需要手动处理包含重复值的情况。
+- 根据值(`arr.splice(arr.indexOf(val), 1)`)删除数组元素效率低下。
+- `Set` 对象允许根据值删除元素,而数组中必须使用基于元素下标的 `splice` 方法。
+- 数组的 `indexOf` 方法无法找到 {{jsxref("NaN")}} 值。
+- `Set` 对象存储唯一值,所以不需要手动处理包含重复值的情况。
-### `WeakSet`对象
+### WeakSet 对象
-{{jsxref("WeakSet")}}对象是一组对象的集合。`WeakSet`中的对象不重复且不可枚举。
+{{jsxref("WeakSet")}} 对象是可收集垃圾值的集合,包括对象和[非注册 symbol](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol#全局共享的_symbol)。`WeakSet` 中的值只能出现一次。它在 `WeakSet` 的集合中是唯一的。
-与{{jsxref("Set")}}对象的主要区别有:
+与 {{jsxref("Set")}} 对象的主要区别有:
-- `WeakSets`中的值必须是对象类型,不可以是别的类型
-- `WeakSet`的“_weak_”指的是,对集合中的对象,如果不存在其他引用,那么该对象将可被垃圾回收。于是不存在一个当前可用对象组成的列表,所以`WeakSets`不可枚举
+- 与 `Set` 相反,`WeakSet` 是**对象或 symbol 的集合**,而不是任何类型的任意值的集合。
+- `WeakSet` 的*弱*是指集合中的对象是弱引用的。如果 `WeakSet` 中存储的一个对象不存在其他的引用,那么它就会被垃圾回收。这也意味着集合中不再存储当前对象。
+- `WeakSet` 不可枚举。
-`WeakSet`的用例很有限,比如使用 DOM 元素作为键来追踪它们而不必担心内存泄漏。
+`WeakSet` 对象的用例有限。它们不会泄露内存,因此可以安全地使用 DOM 元素作为键,并将其标记用于跟踪等目的。
-## `Map`的键和`Set`的值的等值判断
+## Map 和 Set 的键值相等
-`Map`的键和`Set`的值的等值判断都基于[same-value-zero algorithm](https://tc39.es/ecma262/#sec-samevaluezero):
+`Map` 对象和 `Set` 对象的键和值的等值判断都基于 [SameValueZero 算法](/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness#零值相等):
-- 判断使用与`===`相似的规则。
-- `-0`和`+0`相等。
-- {{jsxref("NaN")}}与自身相等(与`===`有所不同)。
+- 等价的作用类似于严格相等运算符 `===`。
+- `-0` 和 `+0` 相等。
+- {{jsxref("NaN")}} 与自身相等(与 `===` 有所不同)。
{{PreviousNext("Web/JavaScript/Guide/Indexed_Collections", "Web/JavaScript/Guide/Working_with_objects")}}
From 0c52e3855934b6dab8a415623eadf71531b77899 Mon Sep 17 00:00:00 2001
From: takemoto <38633237+takemoto@users.noreply.github.com>
Date: Fri, 29 Sep 2023 01:06:22 +0900
Subject: [PATCH 043/331] =?UTF-8?q?SyntaxError=20=E3=81=A7=E6=AD=A3?=
=?UTF-8?q?=E3=81=97=E3=81=8F=E5=8B=95=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84?=
=?UTF-8?q?=E3=81=9F=E3=82=81=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
英語版と同期する際のコピペミスと思われます。
---
files/ja/web/api/mouseevent/button/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/files/ja/web/api/mouseevent/button/index.md b/files/ja/web/api/mouseevent/button/index.md
index 537367307165b2..92c61b6d3ff378 100644
--- a/files/ja/web/api/mouseevent/button/index.md
+++ b/files/ja/web/api/mouseevent/button/index.md
@@ -61,7 +61,7 @@ button.addEventListener('mouseup', (e) => {
default:
log.textContent = `不明なボタンコード: ${e.button}`;
}
-}
+});
```
### 結果
From 6661c2ded303d7fe94c03bceff5f61f4eca0d30d Mon Sep 17 00:00:00 2001
From: Alexander
Date: Fri, 29 Sep 2023 13:25:39 -0600
Subject: [PATCH 044/331] es: Create writing_guidelines/what_we_write (#16210)
* es: Update writing_guidelines/what_we_write
* Apply suggestions from code review
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Apply suggestions from code review
---------
Co-authored-by: Graywolf
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
.../writing_guidelines/what_we_write/index.md | 131 ++++++++++++++++++
1 file changed, 131 insertions(+)
create mode 100644 files/es/mdn/writing_guidelines/what_we_write/index.md
diff --git a/files/es/mdn/writing_guidelines/what_we_write/index.md b/files/es/mdn/writing_guidelines/what_we_write/index.md
new file mode 100644
index 00000000000000..b327fd7a685db3
--- /dev/null
+++ b/files/es/mdn/writing_guidelines/what_we_write/index.md
@@ -0,0 +1,131 @@
+---
+title: Lo que escribimos
+slug: MDN/Writing_guidelines/What_we_write
+l10n:
+ sourceCommit: 5cc673ab34acfb189832b22f85a44c6527e4a5ea
+---
+
+{{MDNSidebar}}
+
+MDN Web Docs contiene documentación _neutral al navegador_ que permite a los desarrolladores web escribir código _agnostico al navegador_. En este artículo, encontrarás información sobre si un tema o tipo de contenido determinado debe incluirse en MDN Web Docs.
+
+## Políticas editoriales
+
+Esta sección describe las políticas establecidas por el personal de Mozilla MDN para controlar el contenido de MDN Web Docs. Se espera que todos los colaboradores de MDN Web Docs cumplan con estas políticas.
+
+### Relevancia
+
+Todo el contenido de MDN Web Docs debe ser relevante para la sección de tecnología en la que aparece. El spam (publicidad comercial) y otros contenidos irrelevantes nunca serán aceptados en el sitio. Los colaboradores que sigan intentando enviar spam pueden ser expulsados de MDN a discreción del personal de Mozilla MDN.
+
+Los enlaces salientes a sitios comerciales que sean relevantes para el tema desde el que se enlazan se evaluarán caso por caso. Su valor para ayudar a los desarrolladores web debe superar el beneficio comercial del sitio vinculado.
+
+### Neutralidad
+
+Los artículos en MDN Web Docs deben mantener un [punto de vista neutral](https://en.wikipedia.org/wiki/Wikipedia:Neutral_point_of_view), informando sobre las variaciones del navegador sin sesgo editorial. No se aceptan comentarios despectivos sobre ningún navegador o agente de usuario.
+
+### Estandarización
+
+Las tecnologías web que se documentarán en MDN Web Docs deben estar en una pista estándar y deben ser implementadas por al menos un motor de renderizado. Las variaciones en el soporte del navegador se documentan en la sección [Compatibilidad con los navegadores](/es/docs/MDN/Writing_guidelines/Page_structures/Compatibility_tables) de un artículo.
+
+## Sugerir contenido
+
+Si desea sugerir contenido para MDN Web Docs, asegúrese de leer esta página antes de enviarlo para asegurarse de que lo que está sugiriendo sea apropiado.
+
+Para nuevas páginas o guías de referencia, abre un [nuevo _issue_](https://github.com/mdn/mdn/issues/new/choose) que describa qué contenido sugieres y por qué (sé lo más explícito posible).
+
+Para sugerir proyectos más grandes que involucren nuevas secciones de contenido, consulte la página [Criterios de inclusión](/es/docs/MDN/Writing_guidelines/What_we_write/Criteria_for_inclusion), que también describe el proceso de solicitud.
+
+## Temas que pertenecen a MDN Web Docs
+
+En general, si se trata de una tecnología web abierta, la documentamos en MDN Web Docs. Esto incluye cualquier característica que pueda ser utilizada por los desarrolladores web para crear sitios web y aplicaciones, ahora y en un futuro próximo.
+
+Si una función es implementada por varios navegadores y aceptada como estándar o está avanzando hacia la estandarización, entonces sí, definitivamente la documentamos aquí. Si una función sigue siendo muy experimental y no se implementa en varios navegadores y/o puede cambiar, entonces sigue siendo adecuada para su inclusión, pero es posible que no se considere una prioridad para que el equipo de redacción trabaje en ella.
+
+En otras palabras, las tecnologías web que se documentarán en MDN Web Docs deben cumplir los siguientes criterios:
+
+- Estar en una pista estándar.
+- Estar especificado en una especificación publicada por un organismo de normalización fiable.
+- Ser implementado por al menos un motor de renderizado.
+- Se lanzará en una versión de navegador estable.
+
+Nuestro objetivo principal es escribir sobre las siguientes tecnologías web front-end:
+
+- [HTML](/es/docs/Web/HTML)
+- [CSS](/es/docs/Web/CSS)
+- [JavaScript](/es/docs/Web/JavaScript)
+- [APIs Web](/es/docs/Web/API)
+- [HTTP](/es/docs/Web/HTTP)
+
+También documentamos algunos temas más amplios, como [SVG](/es/docs/Web/SVG), [XML](/es/docs/Web/XML), [WebAssembly](/es/docs/WebAssembly) y [Accesibilidad](/es/docs/Learn/Accessibility). Además, proporcionamos extensas [guías de aprendizaje](/es/docs/Learn) para estas tecnologías y también un [glosario](/es/docs/Glossary).
+
+> **Nota:** Las tecnologías de backend generalmente tienen su propia documentación en otro lugar que MDN Web Docs no intenta reemplazar, aunque [tenemos algunas excepciones](/es/docs/Learn/Server-side).
+
+Todo el contenido de MDN Web Docs debe ser relevante para la sección de tecnología en la que aparece. Se espera que los colaboradores sigan estas [pautas de escritura de MDN](/es/docs/MDN/Writing_guidelines) para el estilo de escritura, las muestras de código y otros temas.
+
+Para obtener más detalles sobre los criterios para documentar o no una tecnología en MDN Web Docs, consulte la página [Criterios de inclusión](/es/docs/MDN/Writing_guidelines/What_we_write/Criteria_for_inclusion).
+
+### Cuando documentamos una nueva tecnología
+
+En MDN Web Docs, buscamos constantemente documentar las nuevas tecnologías de estándares web según corresponda.
+Tratamos de encontrar un equilibrio entre publicar la documentación lo suficientemente pronto para que los desarrolladores puedan conocer las nuevas funciones tan pronto como lo necesiten y publicarla lo suficientemente tarde para que la tecnología esté madura y estable para que la documentación no necesite actualizaciones constantes o eliminación rápida.
+
+En general, nuestra definición de lo más pronto que consideraremos documentar una nueva tecnología es: _Cuando la función está en una pista de estándares y se implementa en algún lugar._
+
+Consideramos documentar una nueva tecnología si:
+
+- Está especificada en un documento de especificación publicado bajo una organización de estándares confiable (como W3C, WHATWG, Khronos, IETF, etc.) y ha alcanzado un nivel razonable de estabilidad (por ejemplo, un borrador de trabajo del W3C o una recomendación candidata o cuando la especificación se ve bastante estable a juzgar por el flujo de problemas presentados en su contra).
+- Está implementada consistentemente en al menos un navegador, con otros desarrolladores de navegadores mostrando signos de interés (como un ticket activo o un proceso de "intención de implementar" está en efecto).
+
+No documentamos una nueva tecnología si:
+
+- No tiene una especificación o la especificación es una nota aproximada que parece susceptible de cambiar.
+- Uno o ningún navegador lo han implementado actualmente y los navegadores no compatibles no muestran signos de interés en implementarlo. Puede medir esto preguntando a los ingenieros que trabajan en esos navegadores y mirando los rastreadores de errores del navegador y las listas de correo, etc.
+- No es una tecnología expuesta en la web y/o es completamente propietaria.
+- Ya está mostrando signos de ser obsoleta o reemplazada por una función similar.
+
+## Temas que no pertenecen a MDN Web Docs
+
+En general, cualquier cosa que no sea un estándar web abierto no pertenece a MDN Web Docs. El spam (publicidad comercial) y otros contenidos irrelevantes nunca serán aceptados en el sitio. Los colaboradores que sigan intentando enviar spam pueden ser expulsados de MDN a discreción del personal de Mozilla MDN.
+
+Algunos ejemplos de temas inapropiados para MDN Web Docs son:
+
+- Tecnología que no está expuesta a la web y es específica de un navegador.
+- Tecnología no relacionada con la web.
+- Documentación para usuarios finales. Para los productos Mozilla, por ejemplo, dicha documentación pertenece al [sitio de soporte de Mozilla](https://support.mozilla.org).
+- Enlaces externos de autoenlace o autopromoción. Consulta estas pautas en nuestra [guía de estilo de escritura](/es/docs/MDN/Writing_guidelines/Writing_style_guide#external_links) antes de añadir un enlace externo.
+
+### Cuando eliminamos documentación
+
+Las páginas se eliminan de MDN Web Docs si ya no contienen información que es útil de alguna manera, están lo suficientemente desactualizadas o pueden ser incorrectas hasta el punto de que mantenerlas puede ser engañoso.
+
+Los siguientes ejemplos describen situaciones en las que se pueden eliminar páginas/contenido:
+
+- Los artículos contienen información sobre funciones que no se implementaron en todos los navegadores y que luego se retiraron (generalmente funciones experimentales, como la funcionalidad con prefijo).
+- Las páginas de referencia describen características que se eliminaron de la especificación antes de implementarse en cualquier navegador.
+- Los artículos cubren técnicas que luego se demostró que eran malas prácticas y fueron reemplazadas por mejores técnicas.
+- Los artículos contienen información que luego fue reemplazada por otros artículos de mejor calidad.
+- Los artículos contienen contenido inapropiado para MDN Web Docs.
+- Las secciones de MDN Web Docs no se centran en tecnologías web abiertas y son una carga de mantenimiento.
+
+Para obtener más información sobre _cómo_ eliminar documentos, consulta la guía [Crear, mover y eliminar páginas](/es/docs/MDN/Writing_guidelines/Howto/Creating_moving_deleting).
+
+## Tipos de documentos permitidos en MDN Web Docs
+
+En general, nuestra documentación se clasifica en las siguientes categorías:
+
+- Referencias
+- Guías
+- Glosarios
+- Aprender/Tutoriales
+
+En general, MDN Web Docs es para la documentation de _productos_, no para documentation de _proyectos_ o _procesos_. Entonces, si el documento trata sobre "cómo usar una cosa" o "cómo funciona una cosa" (donde, la "cosa" está en una de las categorías de temas mencionadas anteriormente), entonces puede ir a MDN Web Docs.
+
+Si un documento trata sobre "quién está trabajando en el desarrollo de una cosa" o "planes para desarrollar una cosa", entonces no debería ir en MDN Web Docs.
+
+Estos son algunos ejemplos de tipos de documentos que no deberían colocarse en MDN Web Docs:
+
+- Documentos de planificación
+- Documentos de diseño
+- Propuestas de proyectos
+- Especificaciones o normas
+- Material promocional, publicidad o información personal
From 2cf5ec28422e2c630f5fab9aba088b651e5d3658 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 07:10:01 +0900
Subject: [PATCH 045/331] [ko] add index.md for `web/glossary/long_task`
(#16107)
---
files/ko/glossary/long_task/index.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 files/ko/glossary/long_task/index.md
diff --git a/files/ko/glossary/long_task/index.md b/files/ko/glossary/long_task/index.md
new file mode 100644
index 00000000000000..819066d589a7b8
--- /dev/null
+++ b/files/ko/glossary/long_task/index.md
@@ -0,0 +1,16 @@
+---
+title: 오래 걸리는 작업 (Long task)
+slug: Glossary/Long_task
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**오래 걸리는 작업 (Long task)** 은 완료하는 데 50ms 이상이 걸리는 작업입니다.
+
+[메인 UI 스레드](/ko/docs/Glossary/Main_thread)가 50ms 이상 사용되는 중단 없는 기간입니다. 흔한 예로는 오래 실행되는 이벤트 핸들러, 비용이 많이 드는 [리플로우](/ko/docs/Glossary/Reflow) 및 기타 재렌더링, 50ms를 초과하는 이벤트 루프의 여러 반복 사이에서 브라우저가 수행하는 작업 등이 있습니다.
+
+## 같이 보기
+
+- [Long task API](/ko/docs/Web/API/PerformanceLongTaskTiming)
From 71462edb569b3e8bd90f585e8b641a268a3d96aa Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Tue, 26 Sep 2023 21:49:02 +0900
Subject: [PATCH 046/331] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../aria/aria_live_regions/index.md | 113 +++++++++++++-----
1 file changed, 84 insertions(+), 29 deletions(-)
diff --git a/files/ja/web/accessibility/aria/aria_live_regions/index.md b/files/ja/web/accessibility/aria/aria_live_regions/index.md
index 12c3e5f2d5548f..e551e3c1941710 100644
--- a/files/ja/web/accessibility/aria/aria_live_regions/index.md
+++ b/files/ja/web/accessibility/aria/aria_live_regions/index.md
@@ -1,38 +1,59 @@
---
title: ARIA ライブリージョン
slug: Web/Accessibility/ARIA/ARIA_Live_Regions
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
+
+
JavaScript を使うと、検索結果のリストを瞬時に更新する、もしくはユーザーの操作を必要としないような控えめなアラートや通知を表示するなど、ページ全体をリロードせずにページの一部を動的に変更することができます。 これらの変更は通常ページを見ることのできるユーザーにとっては視覚的に明らかですが、支援技術ユーザーにとっては明確ではないかもしれません。ARIA ライブリージョンはこのギャップを埋め、動的なコンテンツの変更を支援技術により通知できるやり方で、プログラムによって表出させる方法を提供します。
> **メモ:** 支援技術はライブリージョンへのコンテンツの _動的な_ 変更を通知します。
->
> `aria-live` 属性もしくは 特化したライブリージョン `role` (例えば `role="alert"` )を、変更をアナウンスしたい要素に含めることで有効になりますが、変更が起こる前にこれらの属性が追加されている必要があります。 — 最初からマークアップに含まれていても、 JavaScript で動的に追加しても構いません。
## ライブリージョン
ページのリロードなしに更新される動的なコンテンツは、ほとんどの場合領域もしくはウィジェットのどちらかです。 対話的でないシンプルなコンテンツの変更は、ライブリージョンとして記されるべきです。ライブリージョンは `aria-live` 属性を使って明示するべきです。
-**`aria-live`**: `aria-live=POLITENESS_SETTING` はスクリーンリーダーがライブリージョンの更新処理の優先度を設定するために使われます。設定は `off`、`polite`、`assertive` で、デフォルトは `off` です。この属性は間違いなく最も重要な属性です。
+**`aria-live`**: `aria-live=POLITENESS_SETTING` はスクリーンリーダーがライブリージョンの更新処理の優先度を設定するために使われます。設定は `off`、`polite`、`assertive` で、既定は `off` です。この属性は間違いなく最も重要な属性です。
通常、`aria-live="polite"` のみが使われます。ユーザーにとって重要な更新を受け取るが、うるさくなるほど速くすべきでない領域にはこの属性を設定すべきです。スクリーンリーダーはユーザーがアイドル状態になったときに読み上げを行います。
`aria-live="assertive"` は、即時に伝えてユーザーの注意を引く必要のある、時間にシビアな通知にのみ使用します。 一般的に assertive なライブリージョンへの変更は、スクリーンリーダーがその時に読み上げているものに割り込みます。つまり、うるさかったり、混乱の元になり得るので、控えめに使うべきです。
-`aria-live="off"` は要素のデフォルトとして扱われるので、明示的に指定する必要はありません。ただし、暗黙のライブリージョンロール (例えば `role="alert"` ) を持つ要素からの出力を止めたい場合は話が別です。
+`aria-live="off"` は要素の既定として扱われるので、明示的に指定する必要はありません。ただし、暗黙のライブリージョンロール(例えば `role="alert"`)を持つ要素からの出力を止めたい場合は話が別です。
### 基本的な例: 有益な画面上の情報を更新するドロップダウンボックス
惑星についての情報を提供することに特化したウェブサイトにドロップダウンボックスがあります。ドロップダウンから惑星が選ばれたとき、選択された惑星の情報でページ上のある領域が更新されます。
-#### HTML
-
```html
Planet information
Planet:
- Select a planet…
+ Select a planet…
Mercury
Venus
Earth
@@ -54,8 +75,6 @@ JavaScript を使うと、検索結果のリストを瞬時に更新する、も
```
-#### JavaScript
-
```js
const PLANETS_INFO = {
mercury: {
@@ -109,35 +128,68 @@ renderPlanetInfoButton.addEventListener("click", (event) => {
});
```
-#### 結果
-
-{{EmbedLiveSample('Dropdown_box_updates_useful_onscreen_information', '', 350)}}
+{{EmbedLiveSample('Basic_example_Dropdown_box_updates_useful_onscreen_information', '', 350)}}
ユーザーが新しい惑星を選択したとき、ライブリージョンの情報が通知されます。ライブリージョンは `aria-live="polite"` を持っているため、スクリーンリーダーはユーザーが一時停止するまで、更新の通知を待ちます。例えばリストを下りながら他の惑星を選択してもライブリージョンの更新は通知されないでしょう。最終的に選ばれた惑星でのみライブリージョンの更新は通知されます。
-ここにはライブリージョンへ (字幕を通して) 更新を通知している、Mac に内蔵している VoiceOver のスクリーンショットがあります:
+こちらはライブリージョンへ(字幕を通して)更新を通知している、Mac に内蔵している VoiceOver のスクリーンショットです。
-![A screenshot of VoiceOver on Mac announcing the update to a live region. Subtitles are shown in the picture.](Web_Accessibility_ARIA_ARIA_Live_Regions.png)
+![Mac の VoiceOver のスクリーンショット。字幕が表示されています。](web_accessibility_aria_aria_live_regions.png)
## ライブリージョン属性を含むロール
-次の [`role="…"`](/ja/docs/Web/Accessibility/ARIA/Roles) 値を持つ要素は、デフォルトではライブリージョンのように振る舞います:
-
-| ロール | 説明 | 互換性に関する注意事項 |
-| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| log | チャット、エラー、ゲームもしくは別種のログ | 互換性を最大限にするために、このロールを使う際には冗長な `aria-live="polite"` を追加します。 |
-| status | ある種の更新された状態を表すステータスバーもしくはスクリーン領域。スクリーンリーダーのユーザーは現在のステータスを読みとるための特別なコマンドを持っています。 | 互換性を最大限にするために、このロールを使う際には冗長な `aria-live="polite"` を追加します。 |
-| alert | スクリーン上で点滅するエラーもしくはアラートメッセージ。アラートは特に、クライアントサイドでユーザーの入力を検査する際の通知で重要です。[アラートの例](https://www.w3.org/WAI/ARIA/apg/example-index/alert/alert.html) | 互換性を最大限にするために、このロールを使う際に `aria-live="assertive"` を追加するよう勧める人もいます。しかし、`aria-live` と `role=alert` の両方を追加すると iOS の VoiceOver で二重に読み上げられるという問題を引き起こします。 |
-| progressbar | ウィジェットとライブリージョンのハイブリッド。aria-valuemin や aria-valuenow、aria-valuemax と共に使います。 (TBD: 情報の追加を検討中) | |
-| marquee | 株式相場表示機のようなスクロールするテキストのためのものです。 | |
-| timer | カウントダウンタイマーやストップウォッチなどの、ある種のタイマーや時計の読み上げ。 | |
+次の [`role="…"`](/ja/docs/Web/Accessibility/ARIA/Roles) 値を持つ要素は、既定ではライブリージョンのように振る舞います。
+
+
+
+
+ ロール
+ 説明
+ 互換性に関する注意事項
+
+
+
+
+ log
+ チャット、エラー、ゲーム、その他の種類のログ
+ 互換性を最大限にするために、このロールを使う際には冗長な aria-live="polite"
を追加してください。
+
+
+ status
+ ある種の更新された状態を表すステータスバーもしくは画面上の領域。スクリーンリーダーのユーザーには、現在のステータスを読みとるための特別なコマンドがあります。
+ 互換性を最大限にするために、このロールを使う際には冗長な aria-live="polite"
を追加してください。
+
+
+ alert
+ スクリーン上で点滅するエラーもしくはアラートメッセージ。アラートは特に、クライアントサイドでユーザーの入力を検査する際の通知で重要です。アラートの例。
+ 互換性を最大限にするために、このロールを使う際に冗長に aria-live="assertive"
を追加するよう勧める人もいます。しかし、aria-live
と role="alert"
の両方を追加すると iOS の VoiceOver で二重に読み上げられるという問題を引き起こします。
+
+
+ progressbar
+ ウィジェットとライブリージョンのハイブリッド。aria-valuemin
、aria-valuenow
、aria-valuemax
と共に使います。(TBD: 情報の追加を検討中)
+
+
+
+ marquee
+ 株式相場表示機のようなスクロールするテキストのためのものです。
+
+
+
+ timer
+ カウントダウンタイマーやストップウォッチなどの、ある種のタイマーや時計の読み上げ。
+
+
+
+
## ライブリージョン属性についてのさらなる説明
ライブリージョンはとてもよくサポートされています。The Paciello Group は、2014年に、[ライブリージョンのサポート状況についての情報](https://www.tpgi.com/screen-reader-support-aria-live-regions/) (2014) を投稿しました。Paul Jadam は特に [`aira-atomic` と `aria-relevant` のサポート](https://pauljadam.com/demos/aria-atomic-relevant.html)についてのリサーチをしました。
-1. **`aria-atomic`**: `aria-atomic=BOOLEAN` は領域の一部だけが変更された場合でも、スクリーンリーダーが常にライブリージョン全体を読み上げるかどうかを設定します。可能な設定は `false` または `true` で、デフォルトは `false` です。
-2. [**`aria-relevant`**](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-relevant): `aria-relevant=[LIST_OF_CHANGES]` はどういったタイプの変更がライブリージョンに関連するかを設定します。可能な設定は `additions`、`removals`、`text`、`all` から一つ以上で、 `additions text` がデフォルトです。
+1. **`aria-atomic`**: `aria-atomic=BOOLEAN` は領域の一部だけが変更された場合でも、スクリーンリーダーが常にライブリージョン全体を読み上げるかどうかを設定します。可能な設定は `false` または `true` で、既定は `false` です。
+2. [**`aria-relevant`**](/ja/docs/Web/Accessibility/ARIA/Attributes/aria-relevant)
+
+ : `aria-relevant=[LIST_OF_CHANGES]` はどういった類の変更がライブリージョンに関連するかを設定します。可能な設定は `additions`、`removals`、`text`、`all` から一つ以上で、 `additions text` が既定です。
### 基本的な例: `aria-atomic`
@@ -158,8 +210,10 @@ function updateClock() {
document.getElementById("clock-mins").textContent =
`0${now.getMinutes()}`.substr(-2);
}
+
/* first run */
updateClock();
+
/* update every minute */
setInterval(updateClock, 60000);
```
@@ -171,7 +225,7 @@ setInterval(updateClock, 60000);
`aria-atomic="true"` はライブリージョンが更新されるたびに、コンテンツの全体 (例 "17:34") が通知されることを保証します。
```html
-
+…
```
`aria-atomic` のもう一つの例 - ユーザーのアクションによる結果の更新/通知
@@ -191,6 +245,7 @@ setInterval(updateClock, 60000);
```js
function change(event) {
const yearOut = document.getElementById("year-output");
+
switch (event.target.id) {
case "year":
yearOut.innerHTML = event.target.value;
@@ -211,16 +266,16 @@ function change(event) {
```html
```
ARIA ライブプロパティの内訳:
- `aria-live="polite"` はスクリーンリーダーが更新をユーザーへ通知する前に、ユーザーがアイドル状態になるまで待つべきであることを示しています。"assertive" による中断では、ユーザーのフローを妨げるかもしれないため、これが最も一般的に使用される値です。
-- `aria-atomic` は設定されていません (デフォルトの `false` が入ります) ので、追加または削除されたユーザーのみが読み上げられ、名簿全体が都度読み上げられることはないはずです。
+- `aria-atomic` は設定されていません(既定値の `false` が入ります)ので、追加または削除されたユーザーのみが読み上げられ、名簿全体が都度読み上げられることはないはずです。
- `aria-relevant="additions removals"` により名簿に追加もしくは削除されたユーザーが読み上げられることを確かにします。
## 関連情報
-- [ARIA Roles](/ja/docs/Web/Accessibility/ARIA/Roles)
+- [ARIA ロール](/ja/docs/Web/Accessibility/ARIA/Roles)
From 6a96282c1db43f5ab4c32f6643ecafa9db2848ce Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Tue, 26 Sep 2023 22:22:42 +0900
Subject: [PATCH 047/331] =?UTF-8?q?2023/09/12=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../global_objects/array/find/index.md | 136 ++++++++----------
1 file changed, 62 insertions(+), 74 deletions(-)
diff --git a/files/ja/web/javascript/reference/global_objects/array/find/index.md b/files/ja/web/javascript/reference/global_objects/array/find/index.md
index 5f1f1c306cc1f4..063a6f4668a304 100644
--- a/files/ja/web/javascript/reference/global_objects/array/find/index.md
+++ b/files/ja/web/javascript/reference/global_objects/array/find/index.md
@@ -2,73 +2,40 @@
title: Array.prototype.find()
slug: Web/JavaScript/Reference/Global_Objects/Array/find
l10n:
- sourceCommit: 968e6f1f3b6f977a09e116a0ac552459b741eac3
+ sourceCommit: 5c3c25fd4f2fbd7a5f01727a65c2f70d73f1880a
---
{{JSRef}}
-`find()` メソッドは、提供されたテスト関数を満たす配列内の最初の要素を返します。
+**`find()`** は {{jsxref("Array")}} インスタンスのメソッドで、提供されたテスト関数を満たす配列内の最初の要素を返します。
テスト関数を満たす値がない場合は、 {{jsxref("undefined")}} を返します。
-{{EmbedInteractiveExample("pages/js/array-find.html","shorter")}}
-
- 配列内で見つかった要素の**添字**が必要な場合は、{{jsxref("Array/findIndex", "findIndex()")}} を使用してください。
- **値の添字**を検索する必要がある場合は、{{jsxref("Array/indexOf", "indexOf()")}} を使用してください。({{jsxref("Array/findIndex", "findIndex()")}} と似ていますが、それぞれの要素の等価性はテスト関数ではなく値でチェックします。)
- 配列内に値が**存在する**かどうかを調べる必要がある場合は、 {{jsxref("Array/includes", "includes()")}} を使用してください。
- 指定したテスト関数を満たす要素があるかどうかを調べる必要がある場合は、 {{jsxref("Array/some", "some()")}} を使用してください。
-## 構文
+{{EmbedInteractiveExample("pages/js/array-find.html", "shorter")}}
-```js
-// アロー関数
-find((element) => {
- /* … */
-});
-find((element, index) => {
- /* … */
-});
-find((element, index, array) => {
- /* … */
-});
-
-// コールバック関数
-find(callbackFn);
-find(callbackFn, thisArg);
+## 構文
-// インラインコールバック関数
-find(function (element) {
- /* … */
-});
-find(function (element, index) {
- /* … */
-});
-find(function (element, index, array) {
- /* … */
-});
-find(function (element, index, array) {
- /* … */
-}, thisArg);
+```js-nolint
+find(callbackFn)
+find(callbackFn, thisArg)
```
### 引数
- `callbackFn`
-
- - : 配列内の各要素に対して実行する関数です。
-
- この関数は以下の引数を伴って呼び出されます。
-
+ - : 配列のそれぞれの要素に対して実行する関数です。一致する要素が得られたことを示すには[真値](/ja/docs/Glossary/Truthy)を返し、そうでなければ[偽値](/ja/docs/Glossary/Falsy)を返してください。この関数は以下の引数で呼び出されます。
- `element`
- : 配列内で現在処理されている要素です。
- `index`
- - : 配列内で現在処理されている要素の添字 (位置) です。
+ - : 配列内で現在処理されている要素の添字(位置)です。
- `array`
- - : `find` を呼び出した元の配列です。
-
- コールバック関数は、一致する要素が見つかった場合は[真値](/ja/docs/Glossary/Truthy)を返す必要があります。
-
+ - : `find()` を呼び出した元の配列です。
- `thisArg` {{optional_inline}}
- - : `callbackFn` 内で {{jsxref("Operators/this", "this")}} として使われるオブジェクトです。
+ - : `callbackFn` 内で `this` として使われるオブジェクトです。[反復処理メソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#反復処理メソッド)を参照してください。
### 返値
@@ -77,20 +44,19 @@ find(function (element, index, array) {
## 解説
-`find` メソッドは、配列のそれぞれの添字に対して一度ずつ、`callbackFn` 関数を実行し、`callbackFn` 関数が[真値](/ja/docs/Glossary/Truthy)を返すまで繰り返します。その場合、`find` は直ちにその要素の値を返します。そうでなければ、`find` は {{jsxref("undefined")}} を返します。
+`find()` メソッドは[反復処理メソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#反復処理メソッド)です。配列の要素のそれぞれに対して、添字の昇順に一度ずつ `callbackFn` 関数を実行し、`callbackFn` 関数が[真値](/ja/docs/Glossary/Truthy)を返すまで繰り返します。 `find()` はその要素を返し、配列の反復処理を停止します。もし `callbackFn` が真値を返さない場合、 `find()` は {{jsxref("undefined")}} を返します。
-`callbackFn` は、値が割り当てられているものに限らず、配列中のすべて の添字に対して呼び出されます。すなわち、疎配列では値が割り当てられているもののみを呼び出すメソッドに比べて効率的ではないことを意味します。
+`callbackFn` は、値が割り当てられているものに限らず、配列中の*すべて*の添字に対して呼び出されます。[疎配列](/ja/docs/Web/JavaScript/Guide/Indexed_collections#疎配列)では、空のスロットは `undefined` と同じ動作をします。
-`thisArg` 引数が `find` に与えられた場合、`callbackFn` の呼び出しのたびに、その内部で `this` 値として使用されます。この引数を省略した場合は {{jsxref("undefined")}} が使用されます。
+`find()` は、呼び出した配列を変更 (mutate) しませんが、`callbackFn` で提供された関数は変更する可能性があります。しかし、配列の長さは最初に `callbackFn` が呼び出される*前に*設定されます。したがって、
-`find` は、呼び出した配列を変更 (mutate) しませんが、`callbackFn` で提供された関数は変更する可能性があります。その場合、`find` によって処理される各要素は、最初に `callbackFn` が呼び出される*前に*設定されます。したがって、
+- `callbackFn` は `find()` の呼び出しを始めたときの配列の長さを超えて追加された要素にはアクセスしません。
+- 既に訪問した位置を変更しても、 `callbackFn` が再度呼び出されることはありません。
+- まだ訪問していない既存の配列要素が `callbackFn` によって変更された場合、 `callbackFn` に渡される値はその要素が取得される時点の値になります。[削除された](/ja/docs/Web/JavaScript/Reference/Operators/delete) 要素は `undefined` であるかのように処理されます。
-- `callbackFn` は `find` の呼び出しが始まった後に追加された要素に対しては実行されません。
-- 既に処理した位置に割り当てられた要素、または範囲外のr要素であった場合は、 `callbackFn` が実行されません。
-- 配列の、既存のまだ呼び出していない要素が `callbackFn` によって変更された場合、`callbackFn` に渡される値は `find` がその要素の添字を処理した時点での値になります。
-- {{jsxref("Operators/delete", "削除")}}された要素も処理されます。
+> **警告:** 上で説明したような同時進行の変更は、理解しにくいコードになることが多いので、(特別な場合を除いて)避けるのが一般的です。
-> **警告:** 前項で説明したような、参照中の配列の同時進行での変更は(特殊な場合を除いて)普通は避けるべきです。多くの場合、理解しにくいコードになります。
+`find()` メソッドは[汎用的](/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#generic_array_methods)です。これは `this` 値に `length` プロパティと整数キーのプロパティがあることだけを期待します。
## 例
@@ -127,7 +93,7 @@ console.log(result); // { name: 'cherries', quantity: 5 }
### 配列内の素数の検索
-次の例は、配列内の素数を探します (配列内に素数が見つからない場合は {{jsxref("undefined")}} を返します)。
+次の例は、配列内の素数を探します(配列内に素数が見つからない場合は {{jsxref("undefined")}} を返します)。
```js
function isPrime(element, index, array) {
@@ -144,7 +110,9 @@ console.log([4, 6, 8, 12].find(isPrime)); // undefined, 見つからない
console.log([4, 5, 8, 12].find(isPrime)); // 5
```
-以下の例は存在せず削除された要素が処理*される*こと、コールバックに渡される値が処理時点での値であることを示しています。
+### 疎配列における find() の使用
+
+疎配列の空のスロットは処理され、 `undefined` と同じように扱われます。
```js
// 添字が 2, 3, 4 の位置に要素がない配列を宣言
@@ -152,20 +120,8 @@ const array = [0, 1, , , , 5, 6];
// 値が割り当てられているものに限らず、すべての添字を表示
array.find((value, index) => {
- console.log("Visited index ", index, " with value ", value);
-});
-
-// 削除されたものを含め、すべての添字を表示
-array.find((value, index) => {
- // 初回で要素 5 を削除
- if (index === 0) {
- console.log("Deleting array[5] with value ", array[5]);
- delete array[5];
- }
- // 要素 5 は削除されても処理される
- console.log("Visited index ", index, " with value ", value);
+ console.log("Visited index", index, "with value", value);
});
-// 期待される出力:
// Visited index 0 with value 0
// Visited index 1 with value 1
// Visited index 2 with value undefined
@@ -173,7 +129,18 @@ array.find((value, index) => {
// Visited index 4 with value undefined
// Visited index 5 with value 5
// Visited index 6 with value 6
-// array[5] にある値 5 を削除
+
+// 削除されたものを含め、すべての添字を表示
+array.find((value, index) => {
+ // 最初の反復処理で要素 5 を削除
+ if (index === 0) {
+ console.log("Deleting array[5] with value", array[5]);
+ delete array[5];
+ }
+ // 要素 5 は削除されたが、なお処理対象となる
+ console.log("Visited index", index, "with value", value);
+});
+// Deleting array[5] with value 5
// Visited index 0 with value 0
// Visited index 1 with value 1
// Visited index 2 with value undefined
@@ -183,6 +150,22 @@ array.find((value, index) => {
// Visited index 6 with value 6
```
+### 配列でないオブジェクトに対する find() の呼び出し
+
+`find()` メソッドは `this` の `length` プロパティを読み込み、次にキーが `length` より小さい非負の整数である各プロパティにアクセスします。
+
+```js
+const arrayLike = {
+ length: 3,
+ "-1": 0.1, // -1 < 0 であるため find() からは無視される
+ 0: 2,
+ 1: 7.3,
+ 2: 4,
+};
+console.log(Array.prototype.find.call(arrayLike, (x) => !Number.isInteger(x)));
+// 7.3
+```
+
## 仕様書
{{Specifications}}
@@ -194,8 +177,13 @@ array.find((value, index) => {
## 関連情報
- [`Array.prototype.find` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-array)
-- {{jsxref("Array.prototype.findIndex()")}} – 要素を見つけて位置を返す
-- {{jsxref("Array.prototype.includes()")}} – 配列内に値が存在するかどうかをテストする
-- {{jsxref("Array.prototype.filter()")}} – 一致しない要素をすべて除外する
-- {{jsxref("Array.prototype.every()")}} – すべての要素をテストする
-- {{jsxref("Array.prototype.some()")}} – 1 つの要素が一致するまでテストする
+- [インデックス付きコレクション](/ja/docs/Web/JavaScript/Guide/Indexed_collections)のガイド
+- {{jsxref("Array")}}
+- {{jsxref("Array.prototype.findIndex()")}}
+- {{jsxref("Array.prototype.findLast()")}}
+- {{jsxref("Array.prototype.findLastIndex()")}}
+- {{jsxref("Array.prototype.includes()")}}
+- {{jsxref("Array.prototype.filter()")}}
+- {{jsxref("Array.prototype.every()")}}
+- {{jsxref("Array.prototype.some()")}}
+- {{jsxref("TypedArray.prototype.find()")}}
From 3c2fe752adc89eebc4d7231d9ee5ed646d3a2600 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Tue, 26 Sep 2023 22:34:42 +0900
Subject: [PATCH 048/331] =?UTF-8?q?String#html=5Fwrapper=5Fmethods=20?=
=?UTF-8?q?=E3=81=AE=E3=83=95=E3=83=A9=E3=82=B0=E3=83=A1=E3=83=B3=E3=83=88?=
=?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../javascript/reference/global_objects/string/anchor/index.md | 2 +-
.../web/javascript/reference/global_objects/string/big/index.md | 2 +-
.../javascript/reference/global_objects/string/blink/index.md | 2 +-
.../javascript/reference/global_objects/string/bold/index.md | 2 +-
.../javascript/reference/global_objects/string/fixed/index.md | 2 +-
.../reference/global_objects/string/fontcolor/index.md | 2 +-
.../reference/global_objects/string/fontsize/index.md | 2 +-
.../javascript/reference/global_objects/string/italics/index.md | 2 +-
.../javascript/reference/global_objects/string/link/index.md | 2 +-
.../javascript/reference/global_objects/string/small/index.md | 2 +-
.../javascript/reference/global_objects/string/strike/index.md | 2 +-
.../web/javascript/reference/global_objects/string/sub/index.md | 2 +-
.../web/javascript/reference/global_objects/string/sup/index.md | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/files/ja/web/javascript/reference/global_objects/string/anchor/index.md b/files/ja/web/javascript/reference/global_objects/string/anchor/index.md
index 7000d8bb7e2da2..994212123d31f3 100644
--- a/files/ja/web/javascript/reference/global_objects/string/anchor/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/anchor/index.md
@@ -9,7 +9,7 @@ l10n:
**`anchor()`** メソッドは、{{HTMLElement("a")}} 要素に name を付けたものに文字列を埋め込んだ文字列 (`str `) を生成します。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
>
> HTML 仕様書では {{HTMLElement("a")}} 要素に `name` 属性を設定することを許容しなくなりましたので、このメソッドが生成するものは妥当なマークアップになりません。
diff --git a/files/ja/web/javascript/reference/global_objects/string/big/index.md b/files/ja/web/javascript/reference/global_objects/string/big/index.md
index b75dbc21b67c36..0c27b050389b0c 100644
--- a/files/ja/web/javascript/reference/global_objects/string/big/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/big/index.md
@@ -9,7 +9,7 @@ l10n:
**`big()`** メソッドは、文字列を {{HTMLElement("big")}} 要素の中に埋め込み (`str `)、文字列が大きなフォントで表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。`` 要素自体は [HTML5](/ja/docs/Glossary/HTML5) で削除されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`` 要素自体は [HTML5](/ja/docs/Glossary/HTML5) で削除されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/blink/index.md b/files/ja/web/javascript/reference/global_objects/string/blink/index.md
index d902bc2f62df1b..f86bf26476d28b 100644
--- a/files/ja/web/javascript/reference/global_objects/string/blink/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/blink/index.md
@@ -9,7 +9,7 @@ l10n:
**`blink()`** メソッドは、文字列を (`str `) に埋め込んだ文字列を生成し、古いブラウザーにおいて文字列を点滅させるために使用します。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。`blink()` の場合、`` 要素自体が現代のブラウザーから削除されており、テキストを点滅させることは、複数のアクセシビリティ標準で忌避されています。この要素を使用することは避けてください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`blink()` の場合、`` 要素自体が現代のブラウザーから削除されており、テキストを点滅させることは、複数のアクセシビリティ標準で忌避されています。この要素を使用することは避けてください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/bold/index.md b/files/ja/web/javascript/reference/global_objects/string/bold/index.md
index 8d02715aa01fd9..b7d602d0793f7a 100644
--- a/files/ja/web/javascript/reference/global_objects/string/bold/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/bold/index.md
@@ -9,7 +9,7 @@ l10n:
**`bold()`** メソッドは、文字列を {{HTMLElement("b")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列が太字で表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/fixed/index.md b/files/ja/web/javascript/reference/global_objects/string/fixed/index.md
index be5e25c30376c9..2ef9eed05d6b2c 100644
--- a/files/ja/web/javascript/reference/global_objects/string/fixed/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/fixed/index.md
@@ -9,7 +9,7 @@ l10n:
**`fixed()`** メソッドは、文字列を {{HTMLElement("tt")}} 要素に埋め込み (`str `)、文字列が固定ピッチフォントで表示されるような文字列を生成します。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.md b/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.md
index 28e42307af64f5..d24714de156f9b 100644
--- a/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/fontcolor/index.md
@@ -9,7 +9,7 @@ l10n:
**`fontcolor()`** メソッドは、文字列を {{HTMLElement("font")}} 要素に埋め込み (`str `)、文字列が指定されたフォント色で表示されるようにする文字列を生成します。
-> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。`fontcolor()` の場合、`` 要素は [HTML5](/ja/docs/Glossary/HTML5) で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
+> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`fontcolor()` の場合、`` 要素は [HTML5](/ja/docs/Glossary/HTML5) で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/fontsize/index.md b/files/ja/web/javascript/reference/global_objects/string/fontsize/index.md
index 0bdf924938cb47..a7766ae9c9da7f 100644
--- a/files/ja/web/javascript/reference/global_objects/string/fontsize/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/fontsize/index.md
@@ -9,7 +9,7 @@ l10n:
**`fontcolor()`** メソッドは、文字列を {{HTMLElement("font")}} 要素に埋め込み (`str `)、文字列が指定されたフォントサイズで表示されるようにする文字列を生成します。
-> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。`fontsize()` の場合、`` 要素は [HTML5](/ja/docs/Glossary/HTML5) で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
+> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`fontsize()` の場合、`` 要素は [HTML5](/ja/docs/Glossary/HTML5) で廃止されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/italics/index.md b/files/ja/web/javascript/reference/global_objects/string/italics/index.md
index a386a798bae77e..b1e32fa745bd3a 100644
--- a/files/ja/web/javascript/reference/global_objects/string/italics/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/italics/index.md
@@ -9,7 +9,7 @@ l10n:
**`italics()`** メソッドは、文字列を {{HTMLElement("i")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列がイタリック体で表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/link/index.md b/files/ja/web/javascript/reference/global_objects/string/link/index.md
index 5595a45e98f8c1..b1f75d3dd0e3cd 100644
--- a/files/ja/web/javascript/reference/global_objects/string/link/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/link/index.md
@@ -9,7 +9,7 @@ l10n:
**`link()`** メソッドは、文字列を {{HTMLElement("a")}} 要素に埋め込み (`str `)、他の URL へのハイパーテイストリンクとして使用される文字列を生成します。
-> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **メモ:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/small/index.md b/files/ja/web/javascript/reference/global_objects/string/small/index.md
index c4c10f4b15c392..dc0cf6dca5d28f 100644
--- a/files/ja/web/javascript/reference/global_objects/string/small/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/small/index.md
@@ -9,7 +9,7 @@ l10n:
**`small()`** メソッドは、文字列を {{HTMLElement("small")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列が小さなフォントで表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/strike/index.md b/files/ja/web/javascript/reference/global_objects/string/strike/index.md
index a54cdc86b91247..4597c91a91e55c 100644
--- a/files/ja/web/javascript/reference/global_objects/string/strike/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/strike/index.md
@@ -9,7 +9,7 @@ l10n:
**`strike()`** メソッドは、文字列を {{HTMLElement("strike")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列が取り消されたテキストとして表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/sub/index.md b/files/ja/web/javascript/reference/global_objects/string/sub/index.md
index dbd2da1b26c61d..cc58c47a231773 100644
--- a/files/ja/web/javascript/reference/global_objects/string/sub/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/sub/index.md
@@ -9,7 +9,7 @@ l10n:
**`sub()`** メソッドは、文字列を {{HTMLElement("sub")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列が下付き文字として表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
diff --git a/files/ja/web/javascript/reference/global_objects/string/sup/index.md b/files/ja/web/javascript/reference/global_objects/string/sup/index.md
index d0465e138bf577..6f12c42ddd2965 100644
--- a/files/ja/web/javascript/reference/global_objects/string/sup/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/sup/index.md
@@ -9,7 +9,7 @@ l10n:
**`sup()`** メソッドは、文字列を {{HTMLElement("sup")}} 要素に埋め込んだ文字列 (`str `) を生成し、文字列が上付き文字として表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。代わりに [DOM API](/ja/docs/Web/API/Document_Object_Model) の [`document.createElement()`](/ja/docs/Web/API/Document/createElement) などを使用してください。
## 構文
From 8a66176545e86460c1c7498f20ba0ad1aff3953a Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 17:02:30 +0900
Subject: [PATCH 049/331] [ko]: add index.md for `web/glossary/exception`
(#15952)
[add]: add index.md for web/glossary/exception
---
files/ko/glossary/exception/index.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 files/ko/glossary/exception/index.md
diff --git a/files/ko/glossary/exception/index.md b/files/ko/glossary/exception/index.md
new file mode 100644
index 00000000000000..ff537fe32260c9
--- /dev/null
+++ b/files/ko/glossary/exception/index.md
@@ -0,0 +1,14 @@
+---
+title: 예외 (Exception)
+slug: Glossary/Exception
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**예외(exception)**는 정상적인 코드 실행을 중단하는 조건입니다. JavaScript {{glossary("syntax error", "문법 에러")}}는 매우 일반적인 예외가 있는 코드입니다.
+
+## 같이 보기
+
+- 위키백과의 [예외 핸들링](https://en.wikipedia.org/wiki/Exception_handling)
From 32c2f606d20b098142805cc0ef255c10d46df951 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 20:22:10 +0900
Subject: [PATCH 050/331] [ko]: add index.md for `web/glossary/fingerprinting`
(#15968)
[add]: add index.md for web/glossary/fingerprinting
---
files/ko/glossary/fingerprinting/index.md | 26 +++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 files/ko/glossary/fingerprinting/index.md
diff --git a/files/ko/glossary/fingerprinting/index.md b/files/ko/glossary/fingerprinting/index.md
new file mode 100644
index 00000000000000..6c5c2278565a9c
--- /dev/null
+++ b/files/ko/glossary/fingerprinting/index.md
@@ -0,0 +1,26 @@
+---
+title: 핑거프린팅 (Fingerprinting)
+slug: Glossary/Fingerprinting
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**핑거프린팅(Fingerprinting)** 은 브라우저와 기본 운영체제의 고유한 기능을 수집하고 결합하여, 웹사이트에서 특정 브라우저(더 나아가 특정 사용자)를 식별하는 방식입니다. 핑거프린팅에는 아래가 포함될 수 있습니다.
+
+- 브라우저 버전
+- 시간대 및 선호하는 언어
+- 시스템에서 사용할 수 있는 비디오 또는 오디오 코덱 세트
+- 시스템에 설치된 글꼴
+- 브라우저 설정 상태
+- 컴퓨터의 디스플레이 크기 및 해상도
+
+웹사이트는 기기에서 JavaScript와 CSS를 실행하여 이와 같은 위와 같은 정보를 검색할 수 있으며, 이 데이터를 결합하여 브라우저에 대한 고유한 핑거프린팅을 생성할 수 있으며, 이는 웹에서 사용자를 추적하는 데 사용될 수 있습니다.
+
+웹 표준은 식별 정보를 수집하는 웹 사이트의 기능을 최소화하는 방식으로 설계되었으며, 브라우저는 일반적으로 자체 보호 기능도 추가합니다.
+
+## 같이 보기
+
+- 웹사이트가 귀하의 브라우저를 지문 인식하는 데 사용할 수 있는 데이터를 표시하는 도구인 [Cover Your Tracks](https://coveryourtracks.eff.org)
+- 핑거프린팅을 방지하기 위한 명세서 작성자의 모범 사례인 [웹 명세서에서 브라우저 핑거프린팅 완화](https://www.w3.org/TR/fingerprinting-guidance/)
From c8609ae9b79f0fab4a01bdf9f53f4a217a821f96 Mon Sep 17 00:00:00 2001
From: pirateTurtle <75886763+wogha95@users.noreply.github.com>
Date: Sat, 30 Sep 2023 21:00:27 +0900
Subject: [PATCH 051/331] [ko] translate `strings` (#15368)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* strings 메타데이터 작성
* strings 1차 번역 완료
* strings 1차 lint 수정 반영
* strings 1차 리뷰 반영
* strings 2차 리뷰 반영
---
.../javascript/first_steps/strings/index.md | 274 +++++++++++-------
1 file changed, 164 insertions(+), 110 deletions(-)
diff --git a/files/ko/learn/javascript/first_steps/strings/index.md b/files/ko/learn/javascript/first_steps/strings/index.md
index dce1cc38e00835..1030f997b830f5 100644
--- a/files/ko/learn/javascript/first_steps/strings/index.md
+++ b/files/ko/learn/javascript/first_steps/strings/index.md
@@ -1,6 +1,8 @@
---
title: 문자열 다루기 — 문자열
slug: Learn/JavaScript/First_steps/Strings
+l10n:
+ sourceCommit: f3b6afa6ec60508dceeec4fd299ec4ba3995c0c2
---
{{LearnSidebar}}{{PreviousMenuNext("Learn/JavaScript/First_steps/Math", "Learn/JavaScript/First_steps/Useful_string_methods", "Learn/JavaScript/First_steps")}}
@@ -25,178 +27,230 @@ slug: Learn/JavaScript/First_steps/Strings
## 단어의 힘
-단어는 인간이 커뮤니케이션 함에 있어 커다란 하나의 부분이라고 할 수 있기에 매우 중요합니다. 웹은 사람들이 정보를 교환하고 공유할 수 있도록 설계된 텍스트 기반의 매체이므로, 웹에 표시되는 단어를 제어하는 것이 유용합니다. {{glossary ( "HTML")}}은 텍스트에 구조와 의미를 제공하며, {{glossary ( "CSS")}}는 텍스트에 스타일(일종의 디자인)을 적용할 수 있게 해주며, JavaScript는 문자열을 조작하기 위한 여러 가지 기능 (텍스트 레이블을 표시하고 용어를 원하는 순서로 정렬하는) 등 다양한 작업을 수행할 수 있습니다.
+단어는 인간이 커뮤니케이션 함에 있어 커다란 하나의 부분이라고 할 수 있기에 매우 중요합니다. 웹은 사람들이 정보를 교환하고 공유할 수 있도록 설계된 텍스트 기반의 매체이므로, 웹에 표시되는 단어를 제어하는 것이 유용합니다. {{glossary("HTML")}}은 텍스트에 구조와 의미를 부여하고, {{glossary("CSS")}}는 텍스트의 스타일을 정밀하게 지정할 수 있게 해주며, JavaScript에는 문자열 조작, 사용자 지정 환영 메시지 및 프롬프트 생성, 필요할 때 올바른 텍스트 레이블 표시, 원하는 순서로 용어 정렬 등을 위한 다양한 기능이 포함되어 있습니다.
지금까지 우리가 여러분에게 보여 줬던 거의 모든 프로그램은 문자열 조작과 관련이 있습니다.
-## 문자열 — 기초
+## 문자열 선언하기
-문자열은 숫자와 유사하게 다루어지지만, 더 깊게 파고들면 눈에 띄는 차이점을 발견하기 시작할 것입니다. 먼저 몇 가지 기본 라인을 콘솔에 입력하여 우리와 친숙하게 만드는 것으로 시작하겠습니다. [이 링크](https://mdn.github.io/learning-area/javascript/introduction-to-js-1/variables/index.html)를 통해 다른 탭이나 창에서 열 수 있고, [브라우저 개발자 도구](/ko/docs/Learn/Common_questions/What_are_browser_developer_tools)를 사용할 수도 있습니다).
+문자열은 언뜻 보기에는 숫자와 비슷하게 다루어지지만, 자세히 살펴보면 몇 가지 눈에 띄는 차이점을 발견할 수 있습니다. [브라우저 개발자 콘솔](/ko/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools)에 몇 가지 기본 행을 입력하여 익숙해지는 것부터 시작해 보겠습니다.
-### 문자열 만들기
+먼저 다음 줄을 입력합니다.
-1. 먼저 아래의 명령어를 입력하세요.
+```js
+const string = "The revolution will not be televised.";
+console.log(string);
+```
- ```js
- var string = "The revolution will not be televised.";
- string;
- ```
+숫자와 마찬가지로 변수를 선언하고 문자열 값으로 초기화한 다음 값을 반환합니다. 여기서 유일한 차이점은 문자열을 작성할 때 값을 따옴표로 묶어야 한다는 점입니다.
- 숫자에서 했던 것과 같게, 우리는 변수를 선언하고, 문자열을 초기화 하고, 값을 반환합니다. 차이점은 오직 숫자 대신 문자열을 넣었고, 문자열 값을 따옴표로 감싸주었습니다.
+이 작업을 수행하지 않거나 따옴표 중 하나를 누락하면 오류가 발생합니다. 다음 줄을 입력해 보세요.
-2. 따옴표를 빼거나 잘못쓰면 에러가 뜰 것입니다. 아래의 코드를 입력해 보세요.
+```js example-bad
+const badString1 = This is a test;
+const badString2 = 'This is a test;
+const badString3 = This is a test';
+```
- ```js example-bad
- var badString = This is a test;
- var badString = 'This is a test;
- var badString = This is a test';
- ```
+따옴표로 묶이지 않은 텍스트는 변수 이름, 속성 이름, 예약어 등으로 간주되므로 이러한 줄은 작동하지 않습니다. 브라우저에서 찾을 수 없는 경우 오류가 발생합니다(예: "누락됨; before 문"). 두 번째 따옴표로 표시된 것처럼 브라우저가 문자열이 시작되는 위치는 알 수 있지만 문자열의 끝을 찾을 수 없는 경우 오류("종료되지 않은 문자열 리터럴")가 발생합니다. 프로그램에서 이러한 오류가 발생하면 돌아가서 모든 문자열을 확인하여 따옴표가 누락되지 않았는지 확인하세요.
- 따옴표로 감싸져 있지 않은 텍스트는 변수 이름, 속성 이름, 예약어와 유사하다고 가정하기 때문에 이러한 코드는 작동하지 않습니다. 만약 브라우저가 찾을 수 없다면 에러가 발생할 것입니다. (e.g. "missing ; before statement"). 만약 브라우저가 문자열이 시작하는 곳은 볼 수 있지만, 끝나는 곳을 찾지 못하면 에러를 던집니다.("unterminated string literal"). 만약 당신의 프로그램이 에러를 계속 만들어낸다면, 다시 돌아가 당신의 문자열에 빠진 따옴표가 없는지 찾아보십시오.
+이전에 변수 문자열을 정의한 경우 다음이 작동하므로 지금 시도해 보세요.
-3. 다음의 코드는 당신이 변수 `string` 을 선언했다면 작동할 것입니다. 아래의 코드를 입력해보세요 :
+```js
+const badString = string;
+console.log(badString);
+```
- ```js
- var badString = string;
- badString;
- ```
+`badString` 은 이제 `string` 과 같은 값으로 설정되었습니다.
- `badString` 은 이제 `string` 과 같은 값으로 설정되었습니다.
+### 따옴표, 쌍따옴표, 백틱
-### 따옴표 vs 쌍따옴표
+JavaScript에서는 따옴표(`'`), 쌍따옴표(`"`) 또는 백틱(`` ` ``)을 선택하여 문자열을 감싸을 수 있습니다. 다음 모두 사용할 수 있습니다.
-1. 자바스크립트에서는 따옴표와 쌍따옴표가 모두 허용됩니다. 다음의 코드는 문제 없이 작동할 것입니다.
+```js-nolint
+const single = 'Single quotes';
+const double = "Double quotes";
+const backtick = `Backtick`;
- ```js
- var sgl = "Single quotes.";
- var dbl = "Double quotes";
- sgl;
- dbl;
- ```
+console.log(single);
+console.log(double);
+console.log(backtick);
+```
-2. 따옴표와 쌍따옴표는 차이점이 거의 없어, 편한대로 사용할 수 있습니다. 하지만 당신은 문자열을 감싸는데 한 종류의 따옴표만 사용해야 되며 그렇지 않으면 에러가 발생합니다. 아래의 코드를 실행해 보세요.
+문자열의 시작과 끝에 같은 문자를 사용해야 하며 그렇지 않으면 오류가 발생합니다.
- ```js example-bad
- var badQuotes = 'What on earth?";
- ```
+```js-nolint example-bad
+const badQuotes = 'This is not allowed!";
+```
-3. 브라우저는 다른종류의 따옴표가 감싸고 있어 문자열이 아직 끝나지 않았다고 생각합니다. 예를 들어, 아래 두 가지 모두 괜찮습니다.
+따옴표를 사용하여 선언한 문자열과 쌍따옴표를 사용하여 선언한 문자열은 동일하며 어떤 스타일을 사용할지는 개인 취향에 따라 다르지만, 한 가지 스타일을 선택하여 코드에서 일관되게 사용하는 것이 좋습니다.
- ```js
- var sglDbl = 'Would you eat a "fish supper"?';
- var dblSgl = "I'm feeling blue.";
- sglDbl;
- dblSgl;
- ```
+백틱을 사용하여 선언된 문자열은 [템플릿 리터럴](/ko/docs/Web/JavaScript/Reference/Template_literals)이라고 하는 특수한 종류의 문자열입니다. 템플릿 리터럴은 대부분의 경우 일반 문자열과 비슷하지만 몇 가지 특별한 속성이 있습니다.
-4. 하지만, 당신은 같은 종류의 따옴표를 문자열에 포함시킬 수 없습니다. 브라우저는 어느 따옴표가 문자열이 끝났다는 것을 알리는지 혼돈하게 됩니다. 따라서 다음의 코드는 에러가 발생합니다.
+- [JavaScript 삽입](#embedding_javascript)을 할 수 있습니다.
+- [여러 줄](#multiline_strings)로 템플릿 리터럴을 선언할 수 있습니다.
- ```js example-bad
- var bigmouth = 'I've got no right to take my place...';
- ```
+## JavaScript 삽입
- 이는 우리를 다음 문단으로 이끌어 줍니다.
+템플릿 리터럴 내에서 JavaScript 변수나 표현식을 `${ }`로 감싸면 결과가 문자열에 포함됩니다.
-### 문자열 이스케이프 문자
+```js
+const name = "Chris";
+const greeting = `Hello, ${name}`;
+console.log(greeting); // "Hello, Chris"
+```
-직전의 문제의 코드를 해결하기 위해, 우리는 따옴표를 이스케이프 문자로 만들어야 합니다. 이스케이프 문자란 어떤 한 문자를 코드가 아닌 문자열로 만들어주는 문자입니다. 자바스크립트에서는 역슬래시 ( \ )를 문자 바로 앞에 작성함으로써 코드가 아닌 문자열로 인식하게 합니다.
+동일한 기법을 사용하여 두 변수를 결합할 수 있습니다.
-```js-nolint example-good
-var bigmouth = 'I\'ve got no right to take my place...';
-console.log(bigmouth);
+```js
+const one = "Hello, ";
+const two = "how are you?";
+const joined = `${one}${two}`;
+console.log(joined); // "Hello, how are you?"
```
-이것은 에러가 일어나지 않습니다. 당신은 `\"` 와 같게도 사용할 수 있습니다. 자세한 사항은 [이스케이프 표기법](/ko/docs/Web/JavaScript/Reference/Global_Objects/String#Escape_notation)을 참고하십시오
+이렇게 문자열을 서로 연결하는 것을 연결이라고 합니다.
-## 문자열 연결하기
+## 컨텍스트에서 연결
-1. 'Concatenate'는 '결합' 을 의미하는 프로프래밍 단어입니다. 자바스크립트에서 문자열을 함께 결합하려면 숫자를 더할 때 사용하는 것과 동일한 더하기 (+) 연산자를 사용하지만 이 상황에서는 다른 작업을 수행합니다. 콘솔에 예를 들어 보겠습니다.
+연결이 실제로 어떻게 사용되는지 살펴보겠습니다.
- ```js
- var one = "Hello, ";
- var two = "how are you?";
- var joined = one + two;
- joined;
- ```
+```html
+Press me
+
+```
+
+```js
+const button = document.querySelector("button");
- 변수 `joined` 의 값은 "Hello, how are you?" 입니다.
+function greet() {
+ const name = prompt("What is your name?");
+ const greeting = document.querySelector("#greeting");
+ greeting.textContent = `Hello ${name}, nice to see you!`;
+}
-2. 마지막 예에서는, 그저 두 개의 문자열을 결합했을 뿐이지만 각 문자열 사이에 +를 포함하기만 하면 원하는 만큼의 문자열을 결합할 수 있습니다. 다음을 시도해 보십시오.
+button.addEventListener("click", greet);
+```
- ```js
- var multiple = one + one + one + one + two;
- multiple;
- ```
+{{ EmbedLiveSample('Concatenation_in_context', '100%', 50) }}
-3. 또한 변수와 실제 문자열을 혼합하여 사용할 수도 있습니다. 다음을 시도해 보십시오.
+여기서는 팝업 대화 상자를 통해 사용자에게 질문에 대한 답변을 요청한 다음 입력한 텍스트를 지정된 변수(이 경우 이름)에 저장하는 {{domxref("window.prompt()", "window.prompt()")}} 함수를 사용하고 있습니다. 그런 다음 일반 인사말 메시지에 `name`을 삽입하는 문자열을 표시합니다.
- ```js
- var response = one + "I am fine — " + two;
- response;
- ```
+### "+"를 이용한 연결
-참고 : 만약 코드에 따옴표나 쌍따옴표로 묶인 문자열을 입력하면 문자열 리터럴 (string literal) 이라 불립니다.
+템플릿 리터럴에만 `${}`를 사용할 수 있으며 일반 문자열에는 사용할 수 없습니다. `+`연산자를 사용하여 일반 문자열을 연결할 수 있습니다.
-### 문자열의 연결
+```js
+const greeting = "Hello";
+const name = "Chris";
+console.log(greeting + ", " + name); // "Hello, Chris"
+```
-실제 작업에 사용되는 연결 방법에 대해 살펴보겠습니다. 이 과정에 앞부분의 예는 다음과 같습니다.
+하지만 템플릿 리터럴을 사용하면 일반적으로 더 읽기 쉬운 코드를 얻을 수 있습니다.
-```html
-Press me
+### 문자열에 표현식 포함
+
+템플릿 리터럴에 변수뿐만 아니라 JavaScript 표현식도 포함할 수 있으며, 그 결과도 결과에 포함됩니다.
+
+```js
+const song = "Fight the Youth";
+const score = 9;
+const highestScore = 10;
+const output = `I like the song ${song}. I gave it a score of ${
+ (score / highestScore) * 100
+}%.`;
+console.log(output); // "I like the song Fight the Youth. I gave it a score of 90%."
+```
+
+## 여러줄 문자열
+
+템플릿 리터럴은 소스 코드의 줄 바꿈을 존중하므로 다음과 같이 여러 줄에 걸쳐 있는 문자열을 작성할 수 있습니다.
+
+```js
+const newline = `One day you finally knew
+what you had to do, and began,`;
+console.log(newline);
+
+/*
+One day you finally knew
+what you had to do, and began,
+*/
```
+일반 문자열을 사용하여 동일한 출력을 얻으려면 문자열에 줄 바꿈 문자(`\n`)를 포함해야 합니다.
+
```js
-var button = document.querySelector("button");
+const newline = "One day you finally knew\nwhat you had to do, and began,";
+console.log(newline);
+
+/*
+One day you finally knew
+what you had to do, and began,
+*/
+```
+
+고급 기능에 대한 더 많은 예제와 자세한 내용은 [템플릿 리터럴](/ko/docs/Web/JavaScript/Reference/Template_literals) 참조 페이지를 참조하세요.
+
+## 문자열에 따옴표 포함
-button.onclick = function () {
- var name = prompt("What is your name?");
- alert("Hello " + name + ", nice to see you!");
-};
+문자열의 시작과 끝을 표시하기 위해 따옴표를 사용하는데, 문자열에 실제 따옴표를 포함하려면 어떻게 해야 할까요? 이것이 작동하지 않는다는 것을 알고 있습니다.
+
+```js-nolint example-bad
+const badQuotes = "She said "I think so!"";
```
-{{ EmbedLiveSample('Concatenation_in_context', '100%', 50, "", "", "hide-codepen-jsfiddle") }}
+한 가지 일반적인 옵션은 다른 문자 중 하나를 사용하여 문자열을 선언하는 것입니다.
+
+```js-nolint
+const goodQuotes1 = 'She said "I think so!"';
+const goodQuotes2 = `She said "I'm not going in there!"`;
+```
-여기서 우리는 {{domxref("Window.prompt()", "Window.prompt()")}} 를 4번째 줄에 쓰는데, 그것은 팝업 대화 상자를 통해 질문에 응답하도록 요청한 다음 지정된 변수 내에 입력하는 텍스트를 저장합니다 — 이 경우에는 `name` 에 저장합니다. 우리는{{domxref("Window.alert()", "Window.alert()")}} 을 5번째 줄에 사용하여 두 개의 문자열 리터럴 및 변수의 값이 포함된 다른 팝업을 표시합니다.
+또 다른 옵션은 문제가 있는 따옴표를 이스케이프하는 것입니다. 문자를 이스케이프 처리한다는 것은 문자가 코드의 일부가 아닌 텍스트로 인식되도록 문자에 어떤 조치를 취한다는 뜻입니다. JavaScript에서는 문자 바로 앞에 백슬래시를 넣어 이 작업을 수행합니다. 이렇게 해보세요.
-### 숫자 vs 문자열
+```js-nolint
+const bigmouth = 'I\'ve got no right to take my place…';
+console.log(bigmouth);
+```
-1. 그러면 문자열과 숫자를 추가 (또는 연결) 하면 어떻게 될까요? 콘솔에서 사용해 보겠습니다.
+동일한 기법을 사용하여 다른 특수 문자를 삽입할 수 있습니다. 자세한 내용은 [이스케이프 시퀀스](/ko/docs/Web/JavaScript/Reference/Lexical_grammar#escape_sequences)를 참조하세요.
- ```js
- "Front " + 242;
- ```
+## 숫자 vs. 문자열
- 이 경우 오류가 발생할 것으로 예상할 수 있지만 잘 작동합니다. 숫자로 문자열을 나타내려는 것은 말이 안되지만 숫자를 문자열로 표현하는 것은 의미가 있습니다. 그래서 브라우저는 숫자를 문자열로 변환하고 두 문자열을 서로 연결시킵니다.
+문자열과 숫자를 연결하려고 하면 어떻게 될까요? 콘솔에서 시도해 봅시다.
-2. 숫자 두 개로도 연결할 수 있습니다 — 따옴표로 감싸면 숫자를 강제로 문자열로 만들 수 있습니다. 아래 코드를 실행해보세요(아래 코드에서 변수가 숫자인지 문자열인지를 확인하기 위해 `typeof` 연산자를 사용합니다.):
+```js
+const name = "Front ";
+const number = 242;
+console.log(`${name}${number}`); // "Front 242"
+```
- ```js
- var myDate = "19" + "67";
- typeof myDate;
- ```
+이 경우 오류가 반환될 것으로 예상할 수 있지만 정상적으로 작동합니다. 숫자를 문자열로 표시하는 방법은 상당히 잘 정의되어 있으므로 브라우저는 숫자를 문자열로 자동 변환하고 두 문자열을 연결합니다.
-3. 만약 코드에 문자열로 바꾸고 싶은 숫자형 변수가 있지만 변수 자체의 값을 바꾸고 싶지 않거나 숫자로 바꾸고 싶은 문자열 변수가 있지만 변수 자체의 값을 바꾸고 싶지 않으면 아래와 같은 생성자를 사용할 수 있습니다:
+문자열로 변환하려는 숫자 변수가 있거나 숫자로 변환하려는 문자열 변수가 있는 경우 다음 두 가지 구문을 사용할 수 있습니다.
- - {{jsxref("Number")}} 객체는 가능하면 어떠한 입력값이건 숫자로 바꿉니다. 다음 코드를 실행해보세요:
+- {{jsxref("Number/Number", "Number()")}} 함수는 전달된 모든 것을 숫자로 변환할 수 있는 경우 숫자로 변환합니다. 다음을 시도해 보세요:
- ```js
- var myString = "123";
- var myNum = Number(myString);
- typeof myNum;
- ```
+ ```js
+ const myString = "123";
+ const myNum = Number(myString);
+ console.log(typeof myNum);
+ // number
+ ```
- - 반면, 모든 숫자는 [`toString()`](/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) 이라는 함수를 가지고 있습니다. 이 함수는 숫자를 동등한 문자열로 변환합니다. 다음 코드를 실행해보세요:
+- 반대로 {{jsxref("String/String", "String()")}} 함수는 인수를 문자열로 변환합니다. 이렇게 해보세요.
- ```js
- var myNum = 123;
- var myString = myNum.toString();
- typeof myString;
- ```
+ ```js
+ const myNum2 = 123;
+ const myString2 = String(myNum2);
+ console.log(typeof myString2);
+ // string
+ ```
- 이 생성자들은 어떤 상황에서는 정말 유용할 수 있습니다. 예를 들어, 만약 어떤 사용자가 숫자를 텍스트 필드 폼에 입력하면, 그 입력 값은 문자열일 것입니다. 하지만 만약 여러분이 이 숫자를 어떤 값에다 더하고 싶다면, 이 입력 값을 숫자로 변환해야 합니다. 이 경우 `Number()` 에 이 값을 넘겨줘서 이 문제를 해결할 수 있습니다.우리는 이미 [Number Guessing Game, in line 61](https://github.com/mdn/learning-area/blob/master/javascript/introduction-to-js-1/first-splash/number-guessing-game.html#L61) 에서 이를 사용한 적이 있습니다.
+이러한 구조는 일부 상황에서 매우 유용할 수 있습니다. 예를 들어 사용자가 양식의 텍스트 필드에 숫자를 입력하면 문자열이 됩니다. 하지만 이 숫자를 무언가에 추가하려면 숫자여야 하므로 Number()를 통해 숫자를 전달하여 처리할 수 있습니다. [숫자 맞추기 게임의 59번째 줄](https://github.com/mdn/learning-area/blob/main/javascript/introduction-to-js-1/first-splash/number-guessing-game.html#L59)에서 정확히 이 작업을 수행했습니다.
## 마치며
-여기까지 자바스크립트에서 다루는 문자열의 기본이었습니다. 다음 글에서는 자바스크립트에서 문자열에 사용할 수 있는 기본 제공 메소드를 조작하는 방법에 대해 알아보겠습니다.
+지금까지 JavaScript에서 다루는 문자열의 기본에 대해 알아봤습니다. 다음 글에서는 이를 바탕으로 JavaScript에서 문자열에 사용할 수 있는 몇 가지 기본 제공 메서드와 이를 사용하여 문자열을 원하는 형태로 조작하는 방법을 살펴보겠습니다.
{{PreviousMenuNext("Learn/JavaScript/First_steps/Math", "Learn/JavaScript/First_steps/Useful_string_methods", "Learn/JavaScript/First_steps")}}
From 9d1de379a67245a98b821d1f8eabe152dbe9f5c1 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:11:11 +0900
Subject: [PATCH 052/331] [ko]:add index.md for `web/glossary/fetch_directive`
(#15964)
[add]:add index.md for web/glossary/fetch_directive
---
files/ko/glossary/fetch_directive/index.md | 30 ++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 files/ko/glossary/fetch_directive/index.md
diff --git a/files/ko/glossary/fetch_directive/index.md b/files/ko/glossary/fetch_directive/index.md
new file mode 100644
index 00000000000000..d181e24eaa33ab
--- /dev/null
+++ b/files/ko/glossary/fetch_directive/index.md
@@ -0,0 +1,30 @@
+---
+title: Fetch 지시어 (Fetch directive)
+slug: Glossary/Fetch_directive
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**{{Glossary("CSP")}} fetch 지시어**는 특정 리소스 유형이 로드될 수 있는 {{HTTPHeader("Content-Security-Policy")}} 헤더 및 제어 위치에 사용됩니다. 예를 들어, {{CSP("script-src")}}는 개발자가 신뢰할 수 있는 스크립트 소스가 페이지에서 실행되도록 허용하는 반면, {{CSP("font-src")}}는 웹 글꼴 소스를 제어합니다.
+
+모든 fetch 지시문은 {{CSP("default-src")}}으로 대체됩니다. 즉, CSP 헤더에 fetch 지시어가 없으면 사용자 에이전트는 `default-src` 지시어를 찾습니다.
+
+전체 목록은 [Fetch 지시어 목록](/ko/docs/Web/HTTP/Headers/Content-Security-Policy#fetch_directives)을 참고해주세요.
+
+## 같이 보기
+
+- [용어 사전](/ko/docs/Glossary)
+
+ - {{Glossary("CSP")}}
+ - {{Glossary("Reporting directive")}}
+ - {{Glossary("Document directive")}}
+ - {{Glossary("Navigation directive")}}
+
+- 참고서
+
+ -
+ - {{HTTPHeader("Content-Security-Policy/upgrade-insecure-requests", "upgrade-insecure-requests")}}
+ - {{HTTPHeader("Content-Security-Policy/block-all-mixed-content", "block-all-mixed-content")}}
+ - {{HTTPHeader("Content-Security-Policy")}}
From 7251852ab8496fe3d625ebe26e3c851656dd8201 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:12:58 +0900
Subject: [PATCH 053/331] [ko]: add index.md for `web/glossary/fuzzing`
(#15995)
[add]: add index.md for web/glossary/fuzzing
---
files/ko/glossary/fuzzing/index.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 files/ko/glossary/fuzzing/index.md
diff --git a/files/ko/glossary/fuzzing/index.md b/files/ko/glossary/fuzzing/index.md
new file mode 100644
index 00000000000000..3ab228b69426a7
--- /dev/null
+++ b/files/ko/glossary/fuzzing/index.md
@@ -0,0 +1,12 @@
+---
+title: 퍼즈 테스팅 (Fuzz testing)
+slug: Glossary/Fuzzing
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**퍼징(Fuzzing)**은 자동화된 도구를 사용해 프로그램 또는 프로그램 기능에 유효하지 않거나 예상치 못한 입력을 제공하고 나서, 결과를 확인해서 프로그램이 충돌하거나 부적절하게 작동하는지 확인하는 소프트웨어 테스팅 기술입니다. 퍼징은 소프트웨어의 안정성, 신뢰성 및 보안을 보장하는 중요한 방법입니다.
+
+- [위키백과: 퍼즈 테스팅(Fuzz testing)](https://en.wikipedia.org/wiki/Fuzz_testing)
From c89a5233364e21cd9289bf213c4c980c7ec44467 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:16:30 +0900
Subject: [PATCH 054/331] [ko]: add index.md for `web/glossary/grid_tracks`
(#16033)
[add]: add index.md for web/glossary/grid_tracks
---
files/ko/glossary/grid_tracks/index.md | 76 ++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
create mode 100644 files/ko/glossary/grid_tracks/index.md
diff --git a/files/ko/glossary/grid_tracks/index.md b/files/ko/glossary/grid_tracks/index.md
new file mode 100644
index 00000000000000..20d9a609f4f5d5
--- /dev/null
+++ b/files/ko/glossary/grid_tracks/index.md
@@ -0,0 +1,76 @@
+---
+title: 그리드 트랙 (Grid Tracks)
+slug: Glossary/Grid_Tracks
+l10n:
+ sourceCommit: d267a8cb862c20277f81bbc223221b36b0c613e6
+---
+
+{{GlossarySidebar}}
+
+**그리드 트랙(grid track)**은 인접한 두 {{glossary("grid lines", "격자 선")}} 사이의 공간입니다. {{cssxref("grid-template-columns")}} 및 {{cssxref("grid-template-rows")}} 속성 또는 약식 {{cssxref("grid")}} 또는 {{cssxref("grid-template")}} 속성을 사용하여 '명시적 그리드'에 정의됩니다. 트랙은 명시적 그리드에서 생성된 트랙 외부에 그리드 요소를 배치하여 '암시적 그리드'에도 생성됩니다.
+
+아래 이미지는 그리드의 첫 번째 행 트랙을 보여줍니다.
+
+![그리드 트랙을 보여주는 다이어그램](1_grid_track.png)
+
+## 명시적 그리드의 트랙 크기
+
+{{cssxref("grid-template-columns")}} 및 {{cssxref("grid-template-rows")}}을 사용하여 그리드 트랙을 정의할 때, 모든 길이 단위를 사용할 수 있습니다. 또한, 그리드 컨테이너에서 사용 가능한 공간의 일부를 나타내는 플렉스 단위인 `fr`도 사용할 수 있습니다.
+
+## 예제
+
+아래 예는 3개의 열 트랙(200픽셀 중 하나, 1fr의 두 번째 트랙, 3fr의 세 번째 트랙)이 있는 그리드를 보여줍니다. 그리드 컨테이너에서, 사용가능한 공간에서 200픽셀을 빼고 남은 공간을 4로 나눕니다. 한 부분은 2번째 열에, 나머지 3 부분은 3번째 열에 제공됩니다.
+
+```css hidden
+* {
+ box-sizing: border-box;
+}
+
+.wrapper {
+ border: 2px solid #f76707;
+ border-radius: 5px;
+ background-color: #fff4e6;
+}
+
+.wrapper > div {
+ border: 2px solid #ffa94d;
+ border-radius: 5px;
+ background-color: #ffd8a8;
+ padding: 1em;
+ color: #d9480f;
+}
+```
+
+```css
+.wrapper {
+ display: grid;
+ grid-template-columns: 200px 1fr 3fr;
+}
+```
+
+```html
+
+
One
+
Two
+
Three
+
Four
+
Five
+
+```
+
+{{ EmbedLiveSample('Example', '500', '230') }}
+
+## 암시적 그리드에서의 트랙 크기
+
+암시적 그리드에서 생성된 트랙은 기본적으로 자동으로 크기가 조절되지만, {{cssxref("grid-auto-rows")}} 및 {{cssxref("grid-auto-columns")}} 속성을 사용해 이러한 트랙의 크기를 정의할 수 있습니다.
+
+## 같이 보기
+
+- [그리드 레이아웃의 기본 개념](/ko/docs/Web/CSS/CSS_grid_layout/Basic_concepts_of_grid_layout)
+- [CSS 그리드 레이아웃 명세서의 그리드 트랙 정의](https://drafts.csswg.org/css-grid/#grid-track-concept)
+- 속성 참고서
+
+ - {{cssxref("grid-template-columns")}}
+ - {{cssxref("grid-template-rows")}}
+ - {{cssxref("grid")}}
+ - {{cssxref("grid-template")}}
From df357b3d92db0dbeb9d437505c9ab76119035fdd Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:17:40 +0900
Subject: [PATCH 055/331] [ko]: add index.md for `web/glossary/khronos`
(#16062)
[add]: add index.md for web/glossary/khronos
---
files/ko/glossary/khronos/index.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 files/ko/glossary/khronos/index.md
diff --git a/files/ko/glossary/khronos/index.md b/files/ko/glossary/khronos/index.md
new file mode 100644
index 00000000000000..d12c77a8b9aaf1
--- /dev/null
+++ b/files/ko/glossary/khronos/index.md
@@ -0,0 +1,17 @@
+---
+title: 크로노스 그룹 (The Khronos Group)
+slug: Glossary/Khronos
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**크로노스 그룹 (The Khronos Group)**은 150개 이상의 업계 선도 기업으로 구성된 회원 중심의 개방형 비영리 컨소시엄입니다. 크로노스 그룹의 목적은 3D 그래픽, 증강 및 가상 현실, 병렬 프로그래밍, 비전 가속 및 기계 학습을 위한 로열티 없는 고급 상호 운용성 표준을 만드는 것입니다.
+
+이 그룹은 {{Glossary("OpenGL")}} 및 {{domxref("WebGL API")}}와 같은 표준을 유지 관리합니다.
+
+## 같이 보기
+
+- 위키백과의 [크로노스 그룹](https://en.wikipedia.org/wiki/Khronos_Group)
+- [크로노스 그룹 웹사이트](https://www.khronos.org/)
From ba5505cdd38a4cab67043646794ce48656095907 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:19:00 +0900
Subject: [PATCH 056/331] [ko]: add index.md for `web/glossary/instance`
(#16100)
[add]: add index.md for web/glossary/instance
---
files/ko/glossary/instance/index.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 files/ko/glossary/instance/index.md
diff --git a/files/ko/glossary/instance/index.md b/files/ko/glossary/instance/index.md
new file mode 100644
index 00000000000000..8914b2ad31b6b1
--- /dev/null
+++ b/files/ko/glossary/instance/index.md
@@ -0,0 +1,14 @@
+---
+title: 인스턴스 (Instance)
+slug: Glossary/Instance
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+{{glossary("constructor", "생성자")}}에 의해 생성된 {{glossary("object", "객체")}}는 해당 생성자의 인스턴스입니다.
+
+## 같이 보기
+
+- 위키백과의 [인스턴스]()
From 3ac44563ef54411249dab6113e8d2196f794c20f Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:21:04 +0900
Subject: [PATCH 057/331] [ko]: add index.md for `web/glossary/hpkp` (#16046)
[add]: add index.md for web/glossary/hpkp
---
files/ko/glossary/hpkp/index.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 files/ko/glossary/hpkp/index.md
diff --git a/files/ko/glossary/hpkp/index.md b/files/ko/glossary/hpkp/index.md
new file mode 100644
index 00000000000000..0eda240888e846
--- /dev/null
+++ b/files/ko/glossary/hpkp/index.md
@@ -0,0 +1,15 @@
+---
+title: HTTP 공개 키 고정 (HPKP)
+slug: Glossary/HPKP
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**HTTP 공개 키 고정(HTTP Public Key Pinning, HPKP)**은 위조된 인증서에 대한 {{Glossary("MITM")}} 공격의 위험을 줄이기 위해 특정 암호화 공개 키를 특정 웹 서버와 연결하도록 웹 클라이언트에 지시하는 더 이상 사용되지 않는 보안 기능입니다.
+
+## 같이 보기
+
+- [RFC 7469](https://datatracker.ietf.org/doc/html/rfc7469)
+- 위키백과의 [HTTP Public Key Pinning](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning)
From c478509426758d941edc9e7554a55529b7b69c9d Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sat, 30 Sep 2023 21:34:50 +0900
Subject: [PATCH 058/331] [ko]: add index.md for
`web/glossary/progressive_web_apps` (#16219)
[add]: add index.md for web/glossary/progressive_web_apps
---
.../ko/glossary/progressive_web_apps/index.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 files/ko/glossary/progressive_web_apps/index.md
diff --git a/files/ko/glossary/progressive_web_apps/index.md b/files/ko/glossary/progressive_web_apps/index.md
new file mode 100644
index 00000000000000..a48e11208268c8
--- /dev/null
+++ b/files/ko/glossary/progressive_web_apps/index.md
@@ -0,0 +1,19 @@
+---
+title: 프로그레시브 웹 앱 (Progressive web apps)
+slug: Glossary/Progressive_web_apps
+l10n:
+ sourceCommit: e0d92259b485a219840367cf4e23a7069f192eec
+---
+
+{{GlossarySidebar}}
+
+프로그레시브 웹 앱 (Progressive web apps, PWA)은 웹 플랫폼 기술을 사용하여 구축되었지만, 플랫폼별 앱과 같은 사용자 경험을 제공하는 애플리케이션입니다.
+
+이러한 종류의 앱은 검색 엔진을 통한 검색 가능성, {{Glossary("URL")}}을 통한 연결 가능, 여러 폼 요소에서 작동 등 웹의 가장 좋은 부분을 모두 활용하지만, 최신 API([Service Workers](/ko/docs/Web/API/Service_Worker_API) 및 [Push](/ko/docs/Web/API/Push_API))를 통해 점진적으로 향상됩니다.
+
+이러한 기능에는 설치 가능, 오프라인 작업, 서버에서 사용자와의 쉬운 동기화 및 재참여가 포함됩니다.
+
+## 같이 보기
+
+- MDN의 [프로그레시브 웹 앱](/ko/docs/Web/Progressive_web_apps)
+- web.dev의 [프로그레시브 웹 앱](https://web.dev/progressive-web-apps/)
From 4b5fa7ad05de1d7fb6e4065bef85c489e0d55d40 Mon Sep 17 00:00:00 2001
From: Jiujiang Liu <37231523+moshuying@users.noreply.github.com>
Date: Sun, 1 Oct 2023 08:12:21 +0800
Subject: [PATCH 059/331] Update index.md (#16269)
---
.../web/javascript/equality_comparisons_and_sameness/index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/files/zh-cn/web/javascript/equality_comparisons_and_sameness/index.md b/files/zh-cn/web/javascript/equality_comparisons_and_sameness/index.md
index 8a5938df947041..188a841886da03 100644
--- a/files/zh-cn/web/javascript/equality_comparisons_and_sameness/index.md
+++ b/files/zh-cn/web/javascript/equality_comparisons_and_sameness/index.md
@@ -145,7 +145,7 @@ function sameValueZero(x, y) {
## 相等性方法比较
-在比较双等号和三等号时,人们通常说一个时另一个的“增强”版本。例如,双等号可以被称为三等号的扩展版本,因为前者可以执行后者的所有操作,但是会对其操作数进行类型转换——例如 `6 == "6"`。或者,也可以说双等号是基础,而三等号是增强版本,因为它要求两个操作数是相同的类型,因此增加了额外的约束。
+在比较双等号和三等号时,人们通常说一个是另一个的“增强”版本。例如,双等号可以被称为三等号的扩展版本,因为前者可以执行后者的所有操作,但是会对其操作数进行类型转换——例如 `6 == "6"`。或者,也可以说双等号是基础,而三等号是增强版本,因为它要求两个操作数是相同的类型,因此增加了额外的约束。
然而,这种思维方式意味着相等比较形成了一个一维的“光谱”,其中“完全严格”位于一端,“完全宽松”位于另一端。这个模型在 {{jsxref("Object.is")}} 方面存在缺陷,因为它既不比双等号“宽松”,也不比三等号“严格”,也不处于两者之间(可以说既比双等号严格,又比三等号宽松)。从下面的相同比较表中,我们可以看出这是由于 {{jsxref("Object.is")}} 处理 {{jsxref("NaN")}} 的方式。请注意,如果 `Object.is(NaN, NaN)` 求值得到 `false`,我们*可以*说它适合宽松/严格光谱,作为三等号的更严格形式,可以区分 `-0` 和 `+0` 。然而,{{jsxref("NaN")}} 的处理意味着这是不正确的。不幸的是,{{jsxref("Object.is")}} 必须根据其特定特征来考虑,而不是根据其相等运算符的宽松度或严格度来考虑。
From 54a7e17dbfd9dffea30cd4e02e90ff5bb29c2c03 Mon Sep 17 00:00:00 2001
From: HoJeong Im <39ghwjd@naver.com>
Date: Sun, 1 Oct 2023 09:36:35 +0900
Subject: [PATCH 060/331] [ko]: revise index.md in
`web/glossary/alignment_container` (#15549)
[revise]: revise index.md in web/glossary/alignment_container
---
.../ko/glossary/alignment_container/index.md | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 files/ko/glossary/alignment_container/index.md
diff --git a/files/ko/glossary/alignment_container/index.md b/files/ko/glossary/alignment_container/index.md
new file mode 100644
index 00000000000000..2df41b594cff88
--- /dev/null
+++ b/files/ko/glossary/alignment_container/index.md
@@ -0,0 +1,25 @@
+---
+title: Alignment container
+slug: Glossary/Alignment_Container
+l10n:
+ sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
+---
+
+{{GlossarySidebar}}
+
+**정렬 컨테이너**는 [정렬 주체](/ko/docs/Glossary/Alignment_Subject)가 정렬되는 직사각형입니다. 정렬 컨테이너는 레이아웃 모드에 의해 정의됩니다. 정렬 컨테이너는 일반적으로 정렬 대상의 포함 블록이며 포함 블록을 설정하는 상자의 쓰기 모드를 가정합니다.
+
+## 같이 보기
+
+- [CSS 박스 정렬](/ko/docs/Web/CSS/CSS_box_alignment) 모듈
+- CSS {{CSSXref("align-content")}} 속성
+- CSS {{CSSXref("align-items")}} 속성
+- CSS {{CSSXref("align-self")}} 속성
+- CSS {{CSSXref("align-tracks")}} 속성
+- CSS {{CSSXref("justify-content")}} 속성
+- CSS {{CSSXref("justify-items")}} 속성
+- CSS {{CSSXref("justify-self")}} 속성
+- CSS {{CSSXref("justify-tracks")}} 속성
+- CSS {{CSSXref("place-content")}} 단축 속성
+- CSS {{CSSXref("place-self")}} 단축 속성
+- CSS {{CSSXref("scroll-snap-align")}} 속성
From da1a55620aaadf585fac1f58d3a0d0906900dcef Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Sun, 1 Oct 2023 18:05:56 +0900
Subject: [PATCH 061/331] =?UTF-8?q?2023/09/16=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
=?UTF-8?q?=20(#16148)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
2023/09/16 時点の英語版に同期
---
.../global_objects/string/big/index.md | 34 ++++++++++++-------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/files/ja/web/javascript/reference/global_objects/string/big/index.md b/files/ja/web/javascript/reference/global_objects/string/big/index.md
index 0c27b050389b0c..0b1fd71b6e0b98 100644
--- a/files/ja/web/javascript/reference/global_objects/string/big/index.md
+++ b/files/ja/web/javascript/reference/global_objects/string/big/index.md
@@ -2,14 +2,14 @@
title: String.prototype.big()
slug: Web/JavaScript/Reference/Global_Objects/String/big
l10n:
- sourceCommit: f3df52530f974e26dd3b14f9e8d42061826dea20
+ sourceCommit: 5a2cea779777daaff451f21ca3b7f4c28a68de9e
---
-{{JSRef}} {{deprecated_header}}
+{{JSRef}} {{Deprecated_Header}}
-**`big()`** メソッドは、文字列を {{HTMLElement("big")}} 要素の中に埋め込み (`str `)、文字列が大きなフォントで表示されるようにします。
+**`big()`** は {{jsxref("String")}} 値のメソッドで、kの文字列を {{HTMLElement("big")}} 要素の中に埋め込み (`str `)、この文字列が大きなフォントで表示されるようにします。
-> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`` 要素自体は [HTML5](/ja/docs/Glossary/HTML5) で削除されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
+> **警告:** [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)はすべて非推奨となっており、互換性目的のみで標準化されています。`` 要素自体は HTML 仕様書から削除されており、今後使用するべきではありません。代わりにウェブ開発者は [CSS](/ja/docs/Web/CSS) プロパティを使用してください。
## 構文
@@ -17,6 +17,10 @@ l10n:
big()
```
+### 引数
+
+なし。
+
### 返値
`` 開始タグで始まり、`str` のテキストが来て、 ` ` 終了タグが来る文字列です。
@@ -25,17 +29,23 @@ big()
### big() の使用
-以下の例では文字列のメソッドを使用して、文字列の大きさを変更しています。
+下記のコードは HTML 文字列を作成し、文書内の本体を文字列で置き換えています。
```js
-const worldString = "Hello, world";
+const contentString = "Hello, world";
+
+document.body.innerHTML = contentString.big();
+```
+
+これで次の HTML が作成されます。
-console.log(worldString.small()); // Hello, world
-console.log(worldString.big()); // Hello, world
-console.log(worldString.fontsize(7)); // Hello, world
+```html
+Hello, world
```
-{{domxref("HTMLElement/style", "element.style")}} オブジェクトを使用すると、要素の `style` 属性を使用して、次のようにもっと汎用的に操作することができます。
+> **警告:** `big` は有効な要素ではなくなっているので、このマークアップは無効です。
+
+`big()` を使用して直接 HTML テキストを作成する代わりに、 CSS を使用してフォントを操作しましょう。例えば、 {{domxref("HTMLElement/style", "element.style")}} 属性を通して {{cssxref("font-size")}} を操作することができます。
```js
document.getElementById("yourElemId").style.fontSize = "2em";
@@ -52,5 +62,5 @@ document.getElementById("yourElemId").style.fontSize = "2em";
## 関連情報
- [`String.prototype.big` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-string-and-regexp)
-- {{jsxref("String.prototype.fontsize()")}}
-- {{jsxref("String.prototype.small()")}}
+- [HTML ラッパーメソッド](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#html_ラッパーメソッド)
+- {{HTMLElement("big")}}
From d88588fb4fe49562ddd8b16211f40e07f96ff8c7 Mon Sep 17 00:00:00 2001
From: Masahiro FUJIMOTO
Date: Wed, 27 Sep 2023 22:45:49 +0900
Subject: [PATCH 062/331] =?UTF-8?q?2023/09/25=20=E6=99=82=E7=82=B9?=
=?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reference/global_objects/promise/index.md | 77 ++++++++-----------
1 file changed, 33 insertions(+), 44 deletions(-)
diff --git a/files/ja/web/javascript/reference/global_objects/promise/index.md b/files/ja/web/javascript/reference/global_objects/promise/index.md
index 6493d16425a7c5..cce038ca61b212 100644
--- a/files/ja/web/javascript/reference/global_objects/promise/index.md
+++ b/files/ja/web/javascript/reference/global_objects/promise/index.md
@@ -7,7 +7,7 @@ l10n:
{{JSRef}}
-**`Promise`** オブジェクトは、非同期処理の完了 (もしくは失敗) の結果およびその結果の値を表します。
+**`Promise`** オブジェクトは、非同期処理の完了(もしくは失敗)の結果およびその結果の値を表します。
プロミスの挙動と使用法について学ぶには、最初に[プロミスの使用](/ja/docs/Web/JavaScript/Guide/Using_promises)をお読みください。
@@ -95,7 +95,7 @@ myPromise
プロミスの終了条件は、その連鎖内の次のプロミスの「決定」状態を決定します。「履行」状態はプロミスの完了が成功したことを示し、「拒否」状態は成功しなかったことを示します。連鎖内で履行されたそれぞれのプロミスの返値は、次の `.then()` に渡され、拒否された理由は連鎖内の次の拒否ハンドラー関数に渡されます。
-連鎖のプロミスは、ロシア人形のように入れ子になっていますが、スタックの一番上のように取り出されます。連鎖の最初のプロミスは最も深くネストされており、最初に取り出されます。
+連鎖のプロミスは、他のものの中に入れ子になっていますが、スタックの一番上のように取り出されます。連鎖の最初のプロミスは最も深くネストされており、最初に取り出されます。
```plain
(プロミス D, (プロミス C, (プロミス B, (プロミス A) ) ) )
@@ -115,7 +115,7 @@ const promiseB = promiseA.then(handleFulfilled1, handleRejected1);
const promiseC = promiseA.then(handleFulfilled2, handleRejected2);
```
-既に「決定」状態のプロミスにアクションを割り当てることができます。その場合、アクションは (適切であれば) 最初の非同期の機会に実行されます。プロミスは非同期であることが保証されていることに注意してください。したがって、既に「解決」状態のプロミスに対するアクションは、スタックがクリアされ、クロックティックが経過した後にのみ実行されます。この効果は `setTimeout(action,10)` とよく似ています
+既に「決定」状態のプロミスにアクションを割り当てることができます。その場合、アクションは (適切であれば) 最初の非同期の機会に実行されます。プロミスは非同期であることが保証されていることに注意してください。したがって、既に「解決」状態のプロミスに対するアクションは、スタックがクリアされ、クロックティックが経過した後にのみ実行されます。この効果は `setTimeout(action, 0)` とよく似ています
```js
const promiseA = new Promise((resolve, reject) => {
@@ -173,56 +173,44 @@ JavaScript はもともと[シングルスレッド](/ja/docs/Glossary/Thread)
- {{jsxref("Promise/Promise", "Promise()")}}
- : 新しい `Promise` オブジェクトを生成します。このコンストラクターは主に、まだプロミスに対応していない関数をラップするために使われます。
-## 静的メソッド
-
-- {{JSxRef("Promise.all()")}}
-
- - : すべてのプロミスが履行されるか、拒否されるかするまで待ちます。
-
- 返却されたプロミスが履行された場合、履行されたプロミスが、複数のプロミスが含まれる反復可能オブジェクトで定義された順番で入った集合配列の値によって履行されます。
-
- 拒否された場合は、反復可能オブジェクトの中で拒否された最初のプロミスの理由によって拒否されます。
-
-- {{JSxRef("Promise.allSettled()")}}
+## 静的プロパティ
- - : すべてのプロミスが決定する (それぞれが履行されるか、拒否される) まで待ちます。
+- {{jsxref("Promise/@@species", "Promise[@@species]")}}
+ - : プロミスのメソッドから返値を構築するために使用するコンストラクターを返します。
- これはすべての与えられたプロミスが履行または拒否された後で、それぞれのプロミスの結果を記述したオブジェクトの配列で解決される Promise を返します。
-
-- {{JSxRef("Promise.any()")}}
- - : Promise オブジェクトの反復可能オブジェクトを取り、反復可能オブジェクトの中のプロミスのうちの一つが履行され次第、そのプロミスから受け取った値で履行される単一のプロミスを返します。
-- {{JSxRef("Promise.race()")}}
-
- - : プロミスのうちの 1 つが履行または拒否されるまで待ちます。
-
- 返されたプロミスが履行された場合、反復可能オブジェクトの中で最初に履行されたプロミスの値によって履行されます。
-
- 拒否された場合、最初に拒否されたプロミスの理由によって拒否されます。
+## 静的メソッド
-- {{JSxRef("Promise.reject()")}}
+- {{jsxref("Promise.all()")}}
+ - : 入力としてプロミスの反復可能オブジェクトを受け取り、単一の `Promise` を返します。この返されたプロミスは、入力さ れたプロミスがすべて履行されたとき(空の反復可能オブジェクトが渡されたときを含める)に、履行された値の配列で履行されます。入力のプロミスのいずれかが拒否されると、この最初の拒否理由によって拒否されます。
+- {{jsxref("Promise.allSettled()")}}
+ - : 入力としてプロミスの反復可能オブジェクトを受け取り、単一の `Promise` を返します。この返されたプロミスは、入力のプロミスがすべて決定されたときに履行されます(空の反復可能オブジェクトが渡された場合を含む)。
+- {{jsxref("Promise.any()")}}
+ - : 入力としてプロミスの反復可能オブジェクトを受け取り、単一の `Promise` を返します。この返されたプロミスは、入力されたプロミスのいずれかが履行されたときに履行され、最初の履行値を返します。入力されたプロミスがすべて拒否された場合(空の反復可能オブジェクトが渡された場合も含む)、拒否された理由の配列を含む {{jsxref("AggregateError")}} を返します。
+- {{jsxref("Promise.race()")}}
+ - : 入力としてプロミスの反復可能オブジェクトを受け取り、単一の `Promise` を返します。この返すプロミスは、最初に決定したプロミスの最終的な状態で決定します。
+- {{jsxref("Promise.reject()")}}
- : 与えられた理由で拒否された新しい `Promise` オブジェクトを返します。
-- {{JSxRef("Promise.resolve()")}}
-
- - : 与えられた値で解決された新しい `Promise` オブジェクトを返します。もし値が Thenable (つまり `then` メソッドを持っているオブジェクト)ならば、返されるプロミスはその Thenable をたどり、その結果を採用します。そうでなければ、返されるプロミスは与えられた値で履行されます。
-
- 一般に、ある値がプロミスであるかどうかがわからない場合は、代わりに {{JSxRef("Promise.resolve", "Promise.resolve(value)")}} を使用し、返値をプロミスとして扱います。
+- {{jsxref("Promise.resolve()")}}
+ - : 与えられた値で解決された `Promise` オブジェクトを返します。もし値が Thenable (つまり `then` メソッドを持っているオブジェクト)ならば、返されるプロミスはその Thenable をたどり、その結果を採用します。そうでなければ、返されるプロミスは与えられた値で履行されます。
## インスタンスプロパティ
+これらのプロパティは `Promise.prototype` で定義されており、すべての `Promise` インスタンスで共有されます。
+
+- {{jsxref("Object/constructor", "Promise.prototype.constructor")}}
+ - : インスタンスオブジェクトを作成したコンストラクター関数。 `Promise` インスタンスの場合、初期値は {{jsxref("Promise/Promise", "Promise")}} コンストラクターです。
- `Promise.prototype[@@toStringTag]`
- : [`@@toStringTag`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) プロパティの初期値は文字列 `"Promise"` です。このプロパティは {{jsxref("Object.prototype.toString()")}} で使用されます。
## インスタンスメソッド
-マイクロタスクのキューやサービスを使用する方法については、[マイクロタスクのガイド](/ja/docs/Web/API/HTML_DOM_API/Microtask_guide)を参照してください。
-
- {{jsxref("Promise.prototype.catch()")}}
- : プロミスに拒否ハンドラーコールバックを追加し、コールバックが呼び出されたときの返値で解決する、または、プロミスが履行された場合は、元の履行結果で解決する
新しいプロミスを返します。
-- {{jsxref("Promise.prototype.then()")}}
- - : プロミスに履行ハンドラーと拒否ハンドラーを追加し、呼び出されたハンドラーの返値で解決する新しいプロミスを返します。プロミスが処理されなかった場合 (すなわち、関連するハンドラー `onFulfilled` または `onRejected` が関数ではない場合) は、元の解決値を返します。
- {{jsxref("Promise.prototype.finally()")}}
- : プロミスにハンドラーを追加し、元のプロミスが解決されたときに解決される新しいプロミスを返します。このハンドラーは、成功か失敗かに関わらず、元のプロミスが完了したときに呼び出されます。
+- {{jsxref("Promise.prototype.then()")}}
+ - : プロミスに履行ハンドラーと拒否ハンドラーを追加し、呼び出されたハンドラーの返値で解決する新しいプロミスを返します。プロミスが処理されなかった場合(すなわち、関連するハンドラー `onFulfilled` または `onRejected` が関数ではない場合)は、元の解決値を返します。
## 例
@@ -315,7 +303,7 @@ new Promise(tetheredGetNumber)
以下の例は `Promise` の仕組みを示したものです。 `testPromise()` メソッドは {{HTMLElement("button")}} をクリックする度に呼び出されます。`testPromise()` メソッドは、 {{domxref("setTimeout()")}} を用いて、 1 秒から 3 秒のランダムな時間の後、メソッドがこれまでに呼ばれた回数で履行されるプロミスを作成します。 `Promise()` コンストラクターを使用してプロミスを生成します。
-プロミスが履行されたことは、 {{JSxRef("Promise.prototype.then()","p1.then()")}} で設定されたコールバックによって記録されます。この記録から、メソッドの同期処理部分が、プロミスによる非同期処理からどのように分離されているかがわかります。
+プロミスが履行されたことは、 {{jsxref("Promise/then", "p1.then()")}} で設定されたコールバックによって記録されます。この記録から、メソッドの同期処理部分が、プロミスによる非同期処理からどのように分離されているかがわかります。
短時間に何度もボタンをクリックすると、さまざまなプロミスが次々と履行されていく様子を見ることもできます。
@@ -330,6 +318,7 @@ new Promise(tetheredGetNumber)
```js
"use strict";
+
let promiseCount = 0;
function testPromise() {
@@ -393,8 +382,8 @@ btn.addEventListener("click", testPromise);
+