From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- .../functions/arguments/caller/index.html | 56 ------ .../global_objects/array/observe/index.html | 89 --------- .../global_objects/array/unobserve/index.html | 134 -------------- .../global_objects/arraybuffer/transfer/index.html | 126 ------------- .../reference/global_objects/iterator/index.html | 95 ---------- .../global_objects/object/count/index.html | 44 ----- .../global_objects/parallelarray/index.html | 59 ------ .../global_objects/stopiteration/index.html | 66 ------- .../global_objects/string/quote/index.html | 75 -------- .../operators/array_comprehensions/index.html | 198 --------------------- .../operators/expression_closures/index.html | 76 -------- .../operators/generator_comprehensions/index.html | 172 ------------------ .../reference/statements/for_each...in/index.html | 81 --------- 13 files changed, 1271 deletions(-) delete mode 100644 files/ja/web/javascript/reference/functions/arguments/caller/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/array/observe/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/array/unobserve/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/iterator/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/object/count/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/parallelarray/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/stopiteration/index.html delete mode 100644 files/ja/web/javascript/reference/global_objects/string/quote/index.html delete mode 100644 files/ja/web/javascript/reference/operators/array_comprehensions/index.html delete mode 100644 files/ja/web/javascript/reference/operators/expression_closures/index.html delete mode 100644 files/ja/web/javascript/reference/operators/generator_comprehensions/index.html delete mode 100644 files/ja/web/javascript/reference/statements/for_each...in/index.html (limited to 'files/ja/web/javascript/reference') diff --git a/files/ja/web/javascript/reference/functions/arguments/caller/index.html b/files/ja/web/javascript/reference/functions/arguments/caller/index.html deleted file mode 100644 index 3626d7644b..0000000000 --- a/files/ja/web/javascript/reference/functions/arguments/caller/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: caller -slug: Web/JavaScript/Reference/Functions/arguments/caller -translation_of: Archive/Web/JavaScript/arguments.caller ---- -

 

- -

{{ Obsolete_header() }}

- -

{{ 英語版章題("Summary") }}

- -

概要

- -

現在実行している関数を呼び出した関数を示します。

- - - - - - - - - - - -
arguments のプロパティ
実装されたバージョン:JavaScript 1.1, NES 2.0 -

JavaScript 1.3: 非推奨とする。JavaScript ??: Removed

-
- -

{{ 英語版章題("Description") }}

- -

説明

- -

arguments.caller はもはや使用されていません。 代わりに関数オブジェクトの非標準の {{jsxref("Function.caller")}} プロパティが使えます。詳細はその説明を参照してください。

- -

arguments.caller プロパティは関数本体の中でのみ利用可能です。

- -

{{ 英語版章題("Examples") }}

- -

- -

次のコードは、関数の中で arguments.caller の値をチェックします。

- -
function myFunc() {
-   if (arguments.caller == null) {
-      return ("The function was called from the top!");
-   } else
-      return ("This function's caller was " + arguments.caller);
-}
-
- -

 

- -

 

- -

{{ languages( { "en": "en/JavaScript/Reference/Functions_and_function_scope/arguments/caller", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Fonctions/arguments/caller", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Funkcje/arguments/caller" } ) }}

diff --git a/files/ja/web/javascript/reference/global_objects/array/observe/index.html b/files/ja/web/javascript/reference/global_objects/array/observe/index.html deleted file mode 100644 index e480baf2e3..0000000000 --- a/files/ja/web/javascript/reference/global_objects/array/observe/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Array.observe() -slug: Web/JavaScript/Reference/Global_Objects/Array/observe -tags: - - Array - - JavaScript - - Method - - Obsolete -translation_of: Archive/Web/JavaScript/Array.observe ---- -
{{JSRef}} {{obsolete_header}}
- -

Array.observe() メソッドは、配列への変更を非同期で監視するために使用されました。オブジェクト用の {{jsxref("Object.observe()")}} と似ています。変更内容は、発生した順番に時系列で提供されます。accept type list ["add", "update", "delete", "splice"] で呼び出された Object.observe() と同等です。しかしながら、この API の使用は非推奨となり、ブラウザから削除されています。代わりに、一般的な {{jsxref("Proxy")}} オブジェクトを使用してください。

- -

構文

- -
Array.observe(arr, callback)
- -

引数

- -
-
arr
-
監視される配列。
-
callback
-
変更されるたびに毎回呼び出される関数。次の引数を持ちます: -
-
changes
-
変更されたオブジェクトの配列。変更オブジェクトのプロパティは次の通り: -
    -
  • name: 変更されたプロパティの名前。
  • -
  • object: 変更後の配列。
  • -
  • type: 変更の種類を示す文字列。 "add", "update", "delete", "splice" のいずれか一つ。
  • -
  • oldValue: "update", "delete" の場合のみ、変更前の値。
  • -
  • index: "splice" の場合のみ。変更が発生したインデックス。
  • -
  • removed: "splice" の場合のみ。取り除かれた要素の配列。
  • -
  • addedCount: "splice" の場合のみ。追加された要素の数。
  • -
-
-
-
-
- -

説明

- -

callback 関数は、arr に変更が発生する度に呼ばれます。すべての変更が発生した順に配列として渡されます。

- -
-

Array.prototype.pop() など、Array メソッド経由の変更は、"splice" 変更として報告されます。配列の長さが変更されないインデックスの割り当て変更は、"update" 変更として報告されます。

-
- -

- -

異なる変更のログを取る

- -
var arr = ['a', 'b', 'c'];
-
-Array.observe(arr, function(changes) {
-  console.log(changes);
-});
-
-arr[1] = 'B';
-// [{type: 'update', object: , name: '1', oldValue: 'b'}]
-
-arr[3] = 'd';
-// [{type: 'splice', object: , index: 3, removed: [], addedCount: 1}]
-
-arr.splice(1, 2, 'beta', 'gamma', 'delta');
-// [{type: 'splice', object: , index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]
-
- -

仕様

- -

Strawman proposal specification.

- -

ブラウザ実装状況

- -
-

{{Compat("javascript.builtins.Array.observe")}}

-
- -

 

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html b/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html deleted file mode 100644 index 1eafff5efa..0000000000 --- a/files/ja/web/javascript/reference/global_objects/array/unobserve/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Array.unobserve -slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve -tags: - - Array - - JavaScript - - Method - - Obsolete -translation_of: Archive/Web/JavaScript/Array.unobserve ---- -
{{JSRef}} {{obsolete_header}}
- -

Array.unobserve()メソッドは、{{jsxref("Array.observe()")}} で設定された監視を削除するために使われていましたが、非推奨となりブラウザから削除されました。代わりに、一般的な {{jsxref("Proxy")}} オブジェクトを使用してください。

- -

構文

- -
Array.unobserve(arr, callback)
- -

引数

- -
-
arr
-
監視を停止する配列。
-
callback
-
arr 配列の変更時に毎回呼び出されるのを停止するための、オブザーバへの参照。
-
- -

説明

- -

配列からオブザーバを削除するため、Array.unobserve() は {{jsxref("Array.observe()")}} の後に呼び出される必要があります。

- -

callback は関数への参照とすべきであり、匿名関数ではいけません。なぜなら、この参照は以前のオブザーバを解除するために使用されるからです。callback として匿名関数を使った Array.unobserve() の呼び出しは、オブザーバを削除できないので無意味です。

- -

- -

配列の監視を削除

- -
var arr = [1, 2, 3];
-
-var observer = function(changes) {
-  console.log(changes);
-}
-
-Array.observe(arr, observer);
-​
-arr.push(4);
-// [{type: "splice", object: <arr>, index: 3, removed:[], addedCount: 1}]
-
-Array.unobserve(arr, observer);
-
-arr.pop();
-// callback は呼び出されなかった。
- -

匿名関数の使用

- -
var persons = ['Khalid', 'Ahmed', 'Mohammed'];
-
-Array.observe(persons, function (changes) {
-  console.log(changes);
-});
-
-persons.shift();
-// [{type: "splice", object: <arr>, index: 0, removed: [ "Khalid" ], addedCount: 0 }]
-
-Array.unobserve(persons, function (changes) {
-  console.log(changes);
-});
-
-persons.push('Abdullah');
-// [{type: "splice", object: <arr>, index: 2, removed: [], addedCount: 1 }]
-// callback は常に呼び出される。
-
- -

ブラウザ実装状況

- -
{{CompatibilityTable}}
- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート{{CompatChrome("36")}} [1]{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
機能AndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート{{CompatNo}}{{CompatChrome("36")}} [1]{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
-
- -

[1] Chrome 49 で非推奨になりました。

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html b/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html deleted file mode 100644 index 2070e902a4..0000000000 --- a/files/ja/web/javascript/reference/global_objects/arraybuffer/transfer/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: ArrayBuffer.transfer() -slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transfer -tags: - - ArrayBuffer - - ECMAScript7 - - Experimental - - Expérimental(2) - - JavaScript - - Method - - Reference - - Référence(2) - - TypedArrays -translation_of: Archive/Web/JavaScript/ArrayBuffer.transfer ---- -
{{JSRef}} {{SeeCompatTable}}
- -

静的な ArrayBuffer.transfer() メソッドは、oldBuffer のデータから得られる内容の新しい ArrayBuffer を返し、newByteLength によって切断されるかゼロ拡張されます。newByteLengthundefined なら、oldBufferbyteLength が使われます。この操作により oldBuffer はデタッチ状態のままになります。

- -

構文

- -
ArrayBuffer.transfer(oldBuffer [, newByteLength]);
- -

引数

- -
-
oldBuffer
-
転送するための {{jsxref("ArrayBuffer")}} オブジェクト
-
newByteLength
-
新しい ArrayBuffer オブジェクトのバイト長
-
- -

戻り値

- -

新しい ArrayBuffer オブジェクト。

- -

説明

- -

ArrayBuffer.transfer() メソッドによって、ArrayBuffer オブジェクトを成長し、デタッチできます。コピーなしで ArrayBuffer を成長される能力は大規模バッファに対してもっと早くなる利点を持っています。ArrayBuffer をデタッチする機能によって、基底メモリがリリースされるときを開発者が明示的に制御できます。これにより、すべての参照を削除し、ガベージコレクションを待たずに済みます。

- -

- -
var buf1 = new ArrayBuffer(40);
-new Int32Array(buf1)[0] = 42;
-
-var buf2 = ArrayBuffer.transfer(buf1, 80);
-buf1.byteLength; // 0
-buf2.byteLength; // 80
-new Int32Array(buf2)[0]; // 42
-
-var buf3 = ArrayBuffer.transfer(buf2, 0);
-buf2.byteLength; // 0
-buf3.byteLength; // 0
-
- -

ポリフィル

- -

次のコードをスクリプトの先頭に挿入することで、transfer() の機能の大部分をネイティブにサポートしていない環境でも対処できるようになります。これはこの API と完全に同じではありませんが、この関数はある ArrayBuffer からそのほかの ArrayBuffer にデータを変換します。

- -
if (!ArrayBuffer.transfer) {
-    ArrayBuffer.transfer = function(source, length) {
-        source = Object(source);
-        var dest = new ArrayBuffer(length);
-        if (!(source instanceof ArrayBuffer) || !(dest instanceof ArrayBuffer)) {
-            throw new TypeError('Source and destination must be ArrayBuffer instances');
-        }
-        if (dest.byteLength >= source.byteLength) {
-            var nextOffset = 0;
-            var leftBytes = source.byteLength;
-            var wordSizes = [8, 4, 2, 1];
-            wordSizes.forEach(function(_wordSize_) {
-                if (leftBytes >= _wordSize_) {
-                    var done = transferWith(_wordSize_, source, dest, nextOffset, leftBytes);
-                    nextOffset = done.nextOffset;
-                    leftBytes = done.leftBytes;
-                }
-            });
-        }
-        return dest;
-        function transferWith(wordSize, source, dest, nextOffset, leftBytes) {
-            var ViewClass = Uint8Array;
-            switch (wordSize) {
-                case 8:
-                    ViewClass = Float64Array;
-                    break;
-                case 4:
-                    ViewClass = Float32Array;
-                    break;
-                case 2:
-                    ViewClass = Uint16Array;
-                    break;
-                case 1:
-                    ViewClass = Uint8Array;
-                    break;
-                default:
-                    ViewClass = Uint8Array;
-                    break;
-            }
-            var view_source = new ViewClass(source, nextOffset, Math.trunc(leftBytes / wordSize));
-            var view_dest = new ViewClass(dest, nextOffset, Math.trunc(leftBytes / wordSize));
-            for (var i = 0; i < view_dest.length; i++) {
-                view_dest[i] = view_source[i];
-            }
-            return {
-                nextOffset : view_source.byteOffset + view_source.byteLength,
-                leftBytes : source.byteLength - (view_source.byteOffset + view_source.byteLength)
-            }
-        }
-    };
-}
- -

仕様

- -

いづれの現行仕様のドラフトにも含まれていませんが、ECMA-262 エディションの機能として提案されました

- -

ブラウザ実装状況

- - - -

{{Compat("javascript.builtins.ArrayBuffer.transfer")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/iterator/index.html b/files/ja/web/javascript/reference/global_objects/iterator/index.html deleted file mode 100644 index 3a641ff7d9..0000000000 --- a/files/ja/web/javascript/reference/global_objects/iterator/index.html +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Iterator -slug: Web/JavaScript/Reference/Global_Objects/Iterator -tags: - - Deprecated - - JavaScript - - Legacy Iterator - - Reference -translation_of: Archive/Web/Iterator ---- -
{{jsSidebar("Objects")}}
- -
非標準。 Iterator 関数は SpiderMonkey固有の機能で、ある時点で削除されます。将来向きの用途に対して、for..ofループとiterator protocolを使用することを検討してください。
- -

概要

- -

レガシーイテレータプロトコルを実装し、オブジェクトの列挙可能なプロパティに対して反復するオブジェクトを返します。

- -

構文

- -
Iterator(object, [keyOnly])
- -

引数

- -
-
object
-
プロパティを反復処理するオブジェクト。
-
keyOnly
-
keyOnly が truthy な値である場合は、Iterator.prototype.nextproperty_name のみ返します。
-
- -

説明

- -

使用方法の概要がIterators and Generatorsページで提供されています。

- -

メソッド

- -
-
Iterator.prototype.next
-
[property_name, property_value]フォーマットで次のアイテムを返します。それ以上のアイテムが存在しない場合、StopIterationをスローします。
-
- -

- -

オブジェクトのプロパティを反復処理する

- -
var a = {
-  x: 10,
-  y: 20,
-};
-var iter = Iterator(a);
-console.log(iter.next()); // ["x", 10]
-console.log(iter.next()); // ["y", 20]
-console.log(iter.next()); // throws StopIteration
-
- -

レガシーデストラクタfor-in文を使用してオブジェクトのプロパティを反復処理する

- -
var a = {
-  x: 10,
-  y: 20,
-};
-
-for (var [name, value] in Iterator(a)) {
-  console.log(name, value);   // x 10
-                              // y 20
-}
-
- -

for-ofとともにイテレータを使用する

- -
var a = {
-  x: 10,
-  y: 20,
-};
-
-for (var [name, value] of Iterator(a)) {  // @@iterator is used
-  console.log(name, value);   // x 10
-                              // y 20
-}
- -

仕様

- -

非標準。すべての現在の仕様書でサポートされていません。

- -

ブラウザ実装状況

- -

サポートされていません。バージョン 57 より前の Firefox でサポートしていました。

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/object/count/index.html b/files/ja/web/javascript/reference/global_objects/object/count/index.html deleted file mode 100644 index 62975242b6..0000000000 --- a/files/ja/web/javascript/reference/global_objects/object/count/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Object.prototype.__count__ -slug: Web/JavaScript/Reference/Global_Objects/Object/count -tags: - - JavaScript - - Object - - Obsolute - - Property - - Prototype -translation_of: Archive/Web/JavaScript/Object.count ---- -
{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}
- -

__count__ プロパティはオブジェクトの列挙可能なプロパティの数を保存するために使用されていましたが、削除されました。

- -

構文

- -
obj.__count__
- -

- -
{ 1: 1 }.__count__              // 1
-[].__count__                    // 0
-[1].__count__                   // 1
-[1, /* hole */, 2, 3].__count__ // 3
-
- -

仕様書

- -

どの仕様書でも定義されていません。

- -

ブラウザーの対応

- -
- - -

{{Compat("javascript.builtins.Object.count")}}

-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/parallelarray/index.html b/files/ja/web/javascript/reference/global_objects/parallelarray/index.html deleted file mode 100644 index 192b09e3f4..0000000000 --- a/files/ja/web/javascript/reference/global_objects/parallelarray/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: ParallelArray -slug: Web/JavaScript/Reference/Global_Objects/ParallelArray -tags: - - JavaScript - - Obsolete - - ParallelArray -translation_of: Archive/Web/ParallelArray ---- -
-
{{jsSidebar("Objects")}}{{obsolete_header}}
-
- -
p>ノート: このオブジェクトは Firefox 17 で実装され {{ Gecko(29) }} から削除されました。現在は Nightly チャネルでのみ ParallelJS (PJS) を使用可能です ({{ bug(944074) }})。
- -

ParallelArray の目標は、ウェブアプリケーション上でデータ並列性を実現することです。ParallelArray 上で利用可能な高階関数は並列的に実行されます(ただし、並列的に実行できない場合は必要に応じて直列実行にフォールバックします)。並列実行性を保証したい場合には、Javascript の機能のうち、Firefox がサポートする並列可能なサブセットのみを利用するようにすることが推奨されています。

- -

構文

- -
new ParallelArray()
-new ParallelArray([element0, element1, ...])
-new ParallelArray(arrayLength, elementalFunction)
- -

ParallelArray インスタンス

- -

プロパティ

- -
-
length
-
ParallelArrayの要素の数
-
- -

メソッド

- -
-
map
-
reduce
-
scan
-
scatter
-
filter
-
flatten
-
partition
-
get
-
- -

- -

例: 並列的に map 処理を行う

- -
var p = new ParallelArray([0, 1, 2, 3, 4]);
-var m = p.map(function (v) {
-  return v + 1;
-});
- -

参考文献

- - diff --git a/files/ja/web/javascript/reference/global_objects/stopiteration/index.html b/files/ja/web/javascript/reference/global_objects/stopiteration/index.html deleted file mode 100644 index 79972224a8..0000000000 --- a/files/ja/web/javascript/reference/global_objects/stopiteration/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: StopIteration -slug: Web/JavaScript/Reference/Global_Objects/StopIteration -tags: - - JavaScript - - Legacy Iterator - - Non-standard - - Reference - - StopItaration -translation_of: Archive/Web/StopIteration ---- -
{{jsSidebar("Objects")}}
- -
非標準。 StopIteration オブジェクトはSpiderMonkey特有の機能です。将来向きの用途に対して、for..of ループとiterator protocolを使用することを検討してください。
- -

概要

- -

StopIteration オブジェクトはレガシーイテレータプロトコルにおける反復の終了を通知するために使用します。

- -

構文

- -
StopIteration
- -

説明

- -

使用法の概要は、Iterators and Generators ページ上で利用可能です

- -

- -

StopIterationIteratorによってスローされます。

- -
var a = {
-  x: 10,
-  y: 20,
-};
-var iter = Iterator(a);
-console.log(iter.next()); // ["x", 10]
-console.log(iter.next()); // ["y", 20]
-console.log(iter.next()); // throws StopIteration
-
- -

StopIterationをスローする。

- -
function f() {
-  yield 1;
-  yield 2;
-  throw StopIteration;
-  yield 3; // this is not executed.
-}
-
-for (var n in f()) {
-  console.log(n);   // 1
-                    // 2
-}
-
- -

仕様

- -

非標準。すべての現在の標準仕様でサポートされていません。

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/string/quote/index.html b/files/ja/web/javascript/reference/global_objects/string/quote/index.html deleted file mode 100644 index 2a074faf32..0000000000 --- a/files/ja/web/javascript/reference/global_objects/string/quote/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: String.prototype.quote() -slug: Web/JavaScript/Reference/Global_Objects/String/quote -tags: - - String - - String Methods -translation_of: Archive/Web/JavaScript/String.quote ---- -
{{JSRef}} {{obsolete_header("37")}} {{non-standard_header}}
- -

特殊文字をエスケープシーケンスで置換しダブル・クォーテーション(")でラップした文字列のコピーを返します。

- -

構文

- -
str.quote()
- -

Return value

- -

A new string representing the original string wrapped in double-quotes, with any special characters escaped.

- -

- -

In the table below thequote()method replaces any special characters and wraps the strings in double-quotes. Also note the third column where a wrapped {{jsxref("Global_Objects/eval", "eval()")}} evaluates the escape sequences again.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
strstr.quote()eval( str.quote() )
Hello world!"Hello world!"Hello world!
Hello
-         world!
"Hello\n\tworld!"Hello
-         world!
" \ — '"\" \\ \u2014 '"" \ — '
- -

仕様

- -

Not part of any standard. Implemented in JavaScript 1.3.

- -

ポリフィル

- -
if (!String.prototype.quote)
-    String.prototype.quote = function(){
-        return JSON.stringify( this ); // since IE8
-    }
- -

ブラウザ互換性情報

- - - -

{{Compat("javascript.builtins.String.quote")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/array_comprehensions/index.html b/files/ja/web/javascript/reference/operators/array_comprehensions/index.html deleted file mode 100644 index 814bdd9eb7..0000000000 --- a/files/ja/web/javascript/reference/operators/array_comprehensions/index.html +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: 配列内包表記 -slug: Web/JavaScript/Reference/Operators/Array_comprehensions -tags: - - JavaScript - - Non-standard - - Operator - - Reference -translation_of: Archive/Web/JavaScript/Array_comprehensions ---- -
非標準。使用しないでください!
-配列内包は非標準であり、Firefox 58 から削除されています。将来向きの用途には、{{jsxref("Array.prototype.map")}}、{{jsxref("Array.prototype.filter")}}、{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}、{{jsxref("Operators/Spread_operator", "スプレッド構文", "", 1)}} の使用を検討してください。
- -
{{jsSidebar("Operators")}}
- -

array comprehension 構文は、既存のものに基づいている新しい配列をすばやく組み立てることができるJavaScriptの式でした。しかし、これは標準仕様や Firefox の実装から削除されました。使用しないでください!

- -

構文

- -
[for (x of iterable) x]
-[for (x of iterable) if (condition) x]
-[for (x of iterable) for (y of iterable) x + y]
-
- -

説明

- -

配列の内包表記内で、下記の二種類のコンポーネントが許されています。:

- - - -

for-of イテレーションは常に最初のコンポーネントです。複数のfor-of イテレーションは、ステートメントが許可されている場合。

- -

配列内包は以前、ECMAScript 2016 で標準化を提案されていました。これは別のものに基づいて新たな配列を構成するための手っ取り早い方法を提供します。配列内包は一般に、{{jsxref("Array.prototype.map", "map()")}} および {{jsxref("Array.prototype.filter", "filter()")}} を呼び出す代わりとして、あるいはそれら 2 つを結合する手段として用いることができます。

- -

次の配列内包は数値の配列を取り込んで、その各数値を 2 倍した値による新しい配列を作成します。

- -
var numbers = [1, 2, 3, 4];
-var doubled = [for (i of numbers) i * 2];
-console.log(doubled); // logs 2,4,6,8
-
- -

これは以下の {{jsxref("Array.prototype.map", "map()")}} による操作と同等です:

- -
var doubled = numbers.map(i => i * 2);
-
- -

配列内包は、特定の式にマッチするアイテムの選択に用いることもできます。以下は、偶数だけを選択する内包です:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var evens = [for (i of numbers) if (i % 2 === 0) i];
-console.log(evens); // logs 2,22,30
-
- -

同じ目的で {{jsxref("Array.prototype.filter", "filter()")}} を用いることができます:

- -
var evens = numbers.filter(i => i % 2 === 0);
-
- -

{{jsxref("Array.prototype.map", "map()")}} および {{jsxref("Array.prototype.filter", "filter()")}} 方式の操作を、ひとつの配列内包に統合することができます。以下は偶数だけをフィルタリングして、それらを 2 倍した値を含む配列を作成します:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var doubledEvens = [for (i of numbers) if (i % 2 === 0) i * 2];
-console.log(doubledEvens); // logs 4,44,60
-
- -

配列内包の角括弧は、スコープ目的の暗黙的なブロックをもたらします。新しい変数 (上記の例における i ) は、{{jsxref("Statements/let","let")}} を用いて宣言されたかのように扱われます。つまり、それらの変数は配列内包の外部で使用できません。

- -

配列内包の入力自体は、配列である必要はありません。イテレータおよびジェネレータ も使用できます。

- -

文字列を入力とすることもできます。(配列状のオブジェクトにおいて) 前出の filter や map の動作を実現するには以下のようにします:

- -
var str = 'abcdef';
-var consonantsOnlyStr = [for (c of str) if (!(/[aeiouAEIOU]/).test(c)) c].join(''); // 'bcdf'
-var interpolatedZeros = [for (c of str) c + '0' ].join(''); // 'a0b0c0d0e0f0'
-
- -

繰り返しになりますが入力データの形式は維持されませんので、文字列へ戻すために {{jsxref("Array.prototype.join", "join()")}} を使用しなければなりません。

- -

- -

簡単な配列の内包表記

- -
[for (i of [ 1, 2, 3 ]) i*i ];
-// [ 1, 4, 9 ]
-
-var abc = [ "A", "B", "C" ];
-[for (letters of abc) letters.toLowerCase()];
-// [ "a", "b", "c" ]
- -

if文で配列の内包表記

- -
var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
-[for (year of years) if (year > 2000) year];
-// [ 2006, 2010, 2014 ]
-[for (year of years) if (year > 2000) if(year < 2010) year];
-// [ 2006], the same as below:
-[for (year of years) if (year > 2000 && year < 2010) year];
-// [ 2006]
-
- -

mapfilterを比較する配列の内包表記

- -

配列の内包表記構文を理解する簡単な方法は、Array {{jsxref("Array.map", "map")}}や{{jsxref("Array.filter", "filter")}}メソッドと比較することです。:

- -
var numbers = [ 1, 2, 3 ];
-
-numbers.map(function (i) { return i * i });
-numbers.map(i => i*i);
-[for (i of numbers) i*i ];
-// all are [ 1, 4, 9 ]
-
-numbers.filter(function (i) { return i < 3 });
-numbers.filter(i => i < 3);
-[for (i of numbers) if (i < 3) i];
-// all are [ 1, 2 ]
-
- -

二つの配列の内包表記

- -

二つの配列で動作させるために二つのfor-ofイテレーションを使用する:

- -
var numbers = [ 1, 2, 3 ];
-var letters = [ "a", "b", "c" ];
-
-var cross = [for (i of numbers) for (j of letters) i+j];
-// [ "1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c" ]
-
-var grid = [for (i of numbers) [for (j of letters) i+j]];
-// [
-//  ["1a", "1b", "1c"],
-//  ["2a", "2b", "2c"],
-//  ["3a", "3b", "3c"]
-// ]
-
-[for (i of numbers) if (i > 1) for (j of letters) if(j > "a") i+j]
-// ["2b", "2c", "3b", "3c"], the same as below:
-
-[for (i of numbers) for (j of letters) if (i > 1) if(j > "a") i+j]
-// ["2b", "2c", "3b", "3c"]
-
-[for (i of numbers) if (i > 1) [for (j of letters) if(j > "a") i+j]]
-// [["2b", "2c"], ["3b", "3c"]], not the same as below:
-
-[for (i of numbers) [for (j of letters) if (i > 1) if(j > "a") i+j]]
-// [[], ["2b", "2c"], ["3b", "3c"]]
-
- -

仕様

- -

最初は ECMAScript 2015 のドラフトでしたが、リビジョン 27 (2014 年 8 月) で取り除かれました。仕様セマンティクスのために ES2015 の古いリビジョンを参照してください。

- -

ブラウザー実装状況

- - - -

{{Compat("javascript.operators.array_comprehensions")}}

- -

古い JS1.7/JS1.8 の内包表記との違い

- -
JS1.7/JS1.8 の内包表記は、バージョン 46 で Gecko から削除しました ({{bug(1220564)}})。
- -

古い内包表記の構文 (使用しないでください!):

- -
[X for (Y in Z)]
-[X for each (Y in Z)]
-[X for (Y of Z)]
-
- -

違い:

- - - -

コード更新の提案について、Bug 1220564 のコメント 42 をご覧ください。

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/expression_closures/index.html b/files/ja/web/javascript/reference/operators/expression_closures/index.html deleted file mode 100644 index 6b0df0f858..0000000000 --- a/files/ja/web/javascript/reference/operators/expression_closures/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 式クロージャ -slug: Web/JavaScript/Reference/Operators/Expression_closures -tags: - - Functions - - JavaScript - - Reference -translation_of: Archive/Web/JavaScript/Expression_closures ---- -
非標準。使用しないでください!
-式クロージャの構文は、非推奨とされた Firefox 固有の機能であり、Firefox Firefox 60 で削除されました。将来向きの用途には、アロー関数 の使用を検討してください。
- -
{{jsSidebar("Operators")}}
- -

式クロージャは、単純な関数を書くための短縮された関数構文です。

- -

構文

- -
function [name]([param1[, param2[, ..., paramN]]])
-   expression
-
- -

引数

- -
-
name
-
関数名。関数が 匿名 の場合、省略できます。名前は関数本体だけのローカルです。
-
paramN
-
関数に渡される引数の名前。関数は、最大 255 個の引数を持つことができます。
-
expression
-
関数本体を構成する式。
-
- -

説明

- -

これは、単純な関数を書くための短縮された関数構文にすぎません。典型的な Lambda 表記 に似た言語で書くためのものです。

- -

JavaScript 1.7 およびそれ以前:

- -
function(x) { return x * x; }
- -

JavaScript 1.8:

- -
function(x) x * x
- -

この構文により、中括弧と 'return' 文をなくします (それらは暗黙的に宣言されています)。構文が短くなること以外に、このようにコードを書くことへの付加的な利点はありません。

- -

- -

イベントリスナをバインドする短縮表現:

- -
document.addEventListener("click", function() false, true);
-
- -

JavaScript 1.6 から、配列関数の一部でこの表記法を用います:

- -
elems.some(function(elem) elem.type == "text");
-
- -

ブラウザの実装状況

- - - -

{{Compat("javascript.operators.expression_closures")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html b/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html deleted file mode 100644 index 250b8fad05..0000000000 --- a/files/ja/web/javascript/reference/operators/generator_comprehensions/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: ジェネレータ内包表記 -slug: Web/JavaScript/Reference/Operators/Generator_comprehensions -tags: - - Iterator - - JavaScript - - Non-standard - - Reference -translation_of: Archive/Web/JavaScript/Generator_comprehensions ---- -
非標準。使用しないでください!
-ジェネレーター内包は非標準であり、Firefox 58 から削除されています。将来向きの用途には {{jsxref("Statements/function*", "ジェネレーター", "", 1)}} の使用を検討してください。
- -
{{jsSidebar("Operators")}}
- -

generator comprehension 構文はすぐに既存の反復可能なオブジェクトに基づいて新たなジェネレーター関数を組み立てることができる JavaScript の式でした。しかし、これは標準仕様や Firefox の実装から削除されました。使用しないでください!

- -

構文

- -
(for (x of iterable) x)
-(for (x of iterable) if (condition) x)
-(for (x of iterable) for (y of iterable) x + y)
-
- -

説明

- -

ジェネレータ内包表記の中では、この2種類のコンポーネントが許可されています。:

- - - -

for-ofイテレーションは常に最初のコンポーネントです。複数のfor-of イテレーションまたはif文が許可されています。

- -

{{jsxref("Operators/Array_comprehensions","配列内包","","true")}} の重大な欠点は、メモリー内に新しい配列全体を構築してしまうことです。配列内包への入力自体が小さい配列であるときのオーバーヘッドは小さいのですが、入力が大きな配列や処理の多い (あるいは本当に無限の) ジェネレーターであるときの配列の新規作成は問題になる場合があります。

- -

ジェネレーターはアイテムを必要なときに要求に応じて算出するため、一連のデータの計算処理を軽減します。ジェネレーター内包は構文的に、配列内包とほとんど同じです。こちらは中括弧の代わりに丸括弧を使用して、配列を構築する代わりに、すぐには実行されないジェネレーターを作成します。これらは、ジェネレーター作成を簡略化した構文と考えることができます。

- -

整数の大規模な数列に対して反復処理を行うイテレーター it を想定します。数列の値を 2 倍にする反復処理を行う、新たなイテレーターを作成したいとします。配列内包では、2 倍の値を含むのに十分な配列をメモリー内に作成します:

- -
var doubles = [for (i in it) i * 2];
-
- -

一方ジェネレーター内包は、必要なときに要求に応じて 2 倍の値を生成するイテレーターを作成します:

- -
var it2 = (for (i in it) i * 2);
-console.log(it2.next()); // The first value from it, doubled
-console.log(it2.next()); // The second value from it, doubled
-
- -

ジェネレーター内包が関数の引数として使用されるときは、関数の呼び出しで使用される丸括弧によりジェネレーター内包の外側の丸括弧を省略できます:

- -
var result = doSomething(for (i in it) i * 2);
-
- -

2 つの例の大きな違いは、ジェネレーター内包を使用すると 'obj' 構造を合計 1 回しかループする必要がないのと対照的に、配列内包ではイテレートの際に再びループすることです。

- -

- -

簡単なジェネレータ内包表記

- -
(for (i of [ 1, 2, 3 ]) i*i );
-// generator function which yields 1, 4, and 9
-
-[...(for (i of [ 1, 2, 3 ]) i*i )];
-// [1, 4, 9]
-
-var abc = [ "A", "B", "C" ];
-(for (letters of abc) letters.toLowerCase());
-// generator function which yields "a", "b", and "c"
-
- -

if文と用いたジェネレータ内包表記

- -
var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ];
-
-(for (year of years) if (year > 2000) year);
-// generator function which yields 2006, 2010, and 2014
-
-(for (year of years) if (year > 2000) if(year < 2010) year);
-// generator function which yields 2006, the same as below:
-
-(for (year of years) if (year > 2000 && year < 2010) year);
-// generator function which yields 2006
-
- -

ジェネレータ関数と比較したジェネレータ内包表記

- -

ジェネレータ内包表記構文を理解する簡単な方法はジェネレータ関数と比較することです。

- -

例 1: 簡単なジェネレータ

- -
var numbers = [ 1, 2, 3 ];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    yield i * i;
-  }
-})()
-
-// Generator comprehension
-(for (i of numbers) i*i );
-
-// Result: both return a generator which yields [ 1, 4, 9 ]
-
- -

例 2: ジェネレータ内でifを使用する

- -
var numbers = [ 1, 2, 3 ];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    if (i < 3) {
-      yield i * 1;
-    }
-  }
-})()
-
-// Generator comprehension
-(for (i of numbers) if (i < 3) i);
-
-// Result: both return a generator which yields [ 1, 2 ]
- -

仕様

- -

ジェネレーター内包は、ECMAScript 2015 で初期化されましたが、リビジョン 27 (2014 年 8 月) で取り除かれました。仕様セマンティクスについて、ES2015 の古いリビジョンをご覧ください。

- -

ブラウザー実装状況

- - - -

{{Compat("javascript.operators.generator_comprehensions")}}

- -

古い JS1.7/JS1.8 の内包表記との違い

- -
JS1.7/JS1.8 の内包表記は、バージョン 46 で削除しました ({{bug(1220564)}})。
- -

古い内包表記の構文 (使用しないでください!):

- -
(X for (Y in Z))
-(X for each (Y in Z))
-(X for (Y of Z))
-
- -

違い:

- - - -

関連情報

- - diff --git a/files/ja/web/javascript/reference/statements/for_each...in/index.html b/files/ja/web/javascript/reference/statements/for_each...in/index.html deleted file mode 100644 index 72df003bfb..0000000000 --- a/files/ja/web/javascript/reference/statements/for_each...in/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: for each...in -slug: Web/JavaScript/Reference/Statements/for_each...in -tags: - - Deprecated - - E4X - - JavaScript - - Obsolete - - Statement -translation_of: Archive/Web/JavaScript/for_each...in ---- -
{{jsSidebar("Statements")}}
- -
-

for each...in 文は ECMA-357 (E4X) の一部として廃止されました。E4X のサポートは削除されました。代替として、for...of 文が推奨されます。
-
- Firefox は for each...in の使用に対して警告を表示します。また、Firefox 57 以降では動作しません。
- 移行のためのヘルプとして Warning: JavaScript 1.6's for-each-in loops are deprecated をご覧ください。

-
- -

for each...inは指定された変数を、オブジェクトの全プロパティの値に対して反復します。異なるそれぞれのプロパティに対し、指定された文が実行されます。

- -

構文

- -
for each (variable in object) {
-  statement
-}
- -
-
variable
-
任意で var キーワードを用いて宣言された、プロパティの値に対して反復する変数。この変数はループにではなく、関数にローカルです。
-
- -
-
object
-
プロパティが反復されるオブジェクト。
-
- -
-
statement
-
各プロパティに対して実行する文。ループ内で複数の文を実行するには、それらの文をグループ化するために ブロック 文 ({ ... }) を使ってください。
-
- -

説明

- -

ある組み込みプロパティに対しては反復されません。これらには、たとえば StringindexOf メソッドといった、オブジェクトのすべての組み込みメソッドが含まれます。しかしながら、すべてのユーザー定義プロパパティに対しては反復されます。

- -

- -

例: for each...in を使う

- -

警告: このようなループを決して配列に使わないでください。オブジェクトにだけ使ってください。詳しくは for...in をご覧ください。

- -

次のスニペットはオブジェクトのプロパティに対して反復し、それらの合計を計算します:

- -
var sum = 0;
-var obj = {prop1: 5, prop2: 13, prop3: 8};
-
-for each (var item in obj) {
-  sum += item;
-}
-
-console.log(sum); // logs "26", which is 5+13+8
- -

仕様

- -

現行の ECMA-262 仕様には含まれていません。JavaScript 1.6 で実装され、非推奨になりました。

- -

ブラウザー実装状況

- - - -

{{Compat("javascript.statements.for_each_in")}}

- -

参照

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