diff options
Diffstat (limited to 'files/ja/web/javascript/new_in_javascript')
11 files changed, 0 insertions, 1404 deletions
diff --git a/files/ja/web/javascript/new_in_javascript/1.1/index.html b/files/ja/web/javascript/new_in_javascript/1.1/index.html deleted file mode 100644 index ec43553cd0..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.1/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: JavaScript 1.1 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.1 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.1 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>The following is a changelog for JavaScript from Netscape Navigator 2.0 to 3.0. The old Netscape documentation references this as <a href="http://web.archive.org/web/20060318153542/wp.netscape.com/eng/mozilla/3.0/handbook/javascript/index.html">"Features added after version 1"</a>. Netscape Navigator 3.0 was released on August 19, 1996. Netscape Navigator 3.0 was the second major version of the browser with JavaScript support.</p> - -<h2 id="JavaScript_versions">JavaScript versions</h2> - -<p>Netscape Navigator 3.0 also introduced JavaScript language versions.</p> - -<pre class="brush: html"><script language="JavaScript"> <!-- JavaScript for Navigator 2.0. --> -<SCRIPT LANGUAGE="JavaScript1.1"> <!-- JavaScript for Navigator 3.0. --></pre> - -<h2 id="New_features_in_JavaScript_1.1">New features in JavaScript 1.1</h2> - -<h3 id="New_objects">New objects</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function">Function</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">Number</a></code></li> -</ul> - -<h3 id="New_properties">New properties</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE">Number.MAX_VALUE</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE">Number.MIN_VALUE</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY">Number.NEGATIVE_INFINITY</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY">Number.POSITIVE_INFINITY</a></code></li> -</ul> - -<h3 id="New_methods">New methods</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join">Array.prototype.join()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse">Array.prototype.reverse()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort">Array.prototype.sort()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split">String.prototype.split()</a></code></li> -</ul> - -<h3 id="New_operators">New operators</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/void">void</a></code></li> -</ul> - -<h3 id="Other_new_features">Other new features</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/HTML/Element/noscript"><noscript></a></code></li> - <li><a href="/en-US/docs/Archive/Web/LiveConnect">LiveConnect</a>. Communication between Java and JavaScript.</li> -</ul> - -<h2 id="Changed_functionality_in_JavaScript_1.1">Changed functionality in JavaScript 1.1</h2> - -<ul> - <li>"Object deletion". You can remove an object by setting its object reference to <code>null</code>.</li> - <li><code>constructor</code> and <code>prototype</code> properties on objects added.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> is now a method of every object (was previously a built-in function); it evaluates a string of JavaScript code in the context of the specified object.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random">Math.random()</a></code> now works on every platform.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString">toString()</a></code>: Added radix parameter, which specifies the base to use for representing numeric values.</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN">isNaN()</a></code> now works on every platform (not only Unix anymore)</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat">parseFloat()</a></code> and <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt">parseint()</a></code> now return <code>NaN</code> on all platforms, if the first character of the specified string cannot be converted to a number; in previous releases, it returned <code>NaN</code> on Solaris and Irix and zero on all other platforms.</li> -</ul></script></pre> diff --git a/files/ja/web/javascript/new_in_javascript/1.2/index.html b/files/ja/web/javascript/new_in_javascript/1.2/index.html deleted file mode 100644 index 9e991631a1..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.2/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: JavaScript 1.2 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.2 -tags: - - JavaScript - - version -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.2 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>この JavaScript の変更履歴は Netscape Navigator3.0~4.0 に基づいています。旧 Netscape Navigator のドキュメントは <a href="https://web.archive.org/web/19971015223714/http://developer.netscape.com/library/documentation/communicator/jsguide/js1_2.htm">archive.org</a> にあります。Netscape Navigator 4.0 は 1997 年 6 月 11 日にリリースされました。Netscape Navigator 4.0 は、JavaScript をサポートするブラウザの 3 番目のメジャーバージョンでした。</p> - -<h2 id="JavaScript_バージョン">JavaScript バージョン</h2> - -<p>Netscape Navigator 4.0 では JavaScript 1.2 を実行できるようになりました。Netscape Navigator 3.0 以前では、language 属性が "JavaScript1.2" 以上に設定されているスクリプトを無視することに注意してください。</p> - -<pre class="brush: html"><SCRIPT LANGUAGE="JavaScript1.1"> <!-- JavaScript for Navigator 3.0. --> -<SCRIPT LANGUAGE="JavaScript1.2"> <!-- JavaScript for Navigator 4.0. --></pre> - -<h2 id="1.2_の新機能">1.2 の新機能</h2> - -<h3 id="新しいオブジェクト">新しいオブジェクト</h3> - -<ul> - <li>objectをリテラル記法を使って生成することが出来ます(Python 1.x のディクショナリリテラル構文からのインスパイア)</li> - <li>配列を作成するときにもリテラル機能を作成することが出来ます(Python 1.x のリストリテラル構文からのインスパイア)。</li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">arguments</a></li> -</ul> - -<h3 id="新しく実装されたプロパティ">新しく実装されたプロパティ</h3> - -<ul> - <li>{{jsxref("Function.arity")}}</li> -</ul> - -<h3 id="新しく実装されたメソッド">新しく実装されたメソッド</h3> - -<ul> - <li>{{jsxref("Array.prototype.concat()")}}</li> - <li>{{jsxref("Array.prototype.slice()")}}</li> - <li>{{jsxref("String.prototype.charCodeAt()")}}</li> - <li>{{jsxref("String.prototype.concat()")}}</li> - <li>{{jsxref("String.fromCharCode()")}}</li> - <li>{{jsxref("String.prototype.match()")}}</li> - <li>{{jsxref("String.prototype.replace()")}}</li> - <li>{{jsxref("String.prototype.search()")}}</li> - <li>{{jsxref("String.prototype.slice()")}}</li> - <li>{{jsxref("String.prototype.substr()")}}</li> -</ul> - -<h3 id="新しい演算子">新しい演算子</h3> - -<ul> - <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a></li> - <li><a href="/ja/docs/Web/JavaScript/Equality_comparisons_and_when_to_use_them">Equality operators</a>(<code>==</code> と <code>!=</code>)</li> -</ul> - -<h3 id="新しい構文">新しい構文</h3> - -<ul> - <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/label">Labeled</a> statements</li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/switch"><code>switch</code></a></li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/do...while"><code>do...while</code></a></li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/import"><code>import</code></a></li> - <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/export"><code>export</code></a></li> -</ul> - -<h3 id="他の新機能">他の新機能</h3> - -<ul> - <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">Regular Expressions</a></li> - <li><a href="https://web.archive.org/web/19971015223714/http://developer.netscape.com/library/documentation/communicator/jsguide/js1_2.htm">Signed scripts</a></li> -</ul> - -<h2 id="JavaScript_1.2_での機能変更">JavaScript 1.2 での機能変更</h2> - -<ul> - <li>function がネスト出来る。</li> - <li>数値を Number に変換する。</li> - <li><code>x</code> が数値化できない文字列の場合、エラーをスローせずに、<code>NaN</code> を生成する</li> - <li>文字列を String に変換する。</li> - <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort">Array.prototype.sort()</a></code> がすべてのプラットフォームで実行可能。undefined 要素を null に変換せず、配列のハイエンドにそれらをソートする。</li> - <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split">String.prototype.split()</a></code> - <ul> - <li>オブジェクトの文字列を分割するすることにより、正規表現の引数と同様に、固定された文字列を取ることが出来る。</li> - <li>結果の配列内の空要素を末尾に含まないように、リミットカウントを取ることが出来る。</li> - </ul> - </li> - <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String/substring">String.prototype.substring()</a></code>: 最初のインデックスが 2 つメのインデックスよりも大きい場合、交換しなくなった。</li> - <li><code>toString()</code>: オブジェクトや配列をリテラルに変換。</li> - <li>The <a href="/ja/docs/Web/JavaScript/Reference/Statements/break"><code>break</code></a> ステートメントと <a href="/ja/docs/Web/JavaScript/Reference/Statements/continue"><code>continue</code></a> ステートメントを新しいラベルステートメント内で使用可能。</li> -</ul> diff --git a/files/ja/web/javascript/new_in_javascript/1.3/index.html b/files/ja/web/javascript/new_in_javascript/1.3/index.html deleted file mode 100644 index cf0c5827f2..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.3/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: JavaScript 1.3 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.3 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.3 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>The following is a changelog for JavaScript from Netscape Navigator 4.0 to 4.5. The old Netscape documentation can be found on <a href="http://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html">archive.org</a>. Netscape Navigator 4.5 was released on October 19, 1998.</p> - -<p>The most significant change in JavaScript 1.3 was compliance with ECMA-262 and Unicode by removing inconsistencies between JavaScript 1.2 and the new ECMA standard (which was published in June 1997). Additional features of version 1.2, at the time not specified by ECMA-262 were kept in the JavaScript language (see below for a list of differences).</p> - -<h2 id="JavaScript_versions">JavaScript versions</h2> - -<p>Netscape Communicator and Navigator 4.06 and 4.5 executes JavaScript language versions up to 1.3. Note that Communicator and Navigator 4.0-4.05 and earlier ignored scripts with the language attribute set to "JavaScript1.3" and higher.</p> - -<pre class="brush: html"><script language="JavaScript1.2"> <!-- JavaScript for Navigator 4.0. --> -<SCRIPT LANGUAGE="JavaScript1.3"> <!-- JavaScript for Navigator 4.5. --></pre> - -<h2 id="New_features_in_JavaScript_1.3">New features in JavaScript 1.3</h2> - -<h3 id="New_globals">New globals</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="JavaScript/Reference/Global_Objects/NaN"><code>NaN</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity" title="JavaScript/Reference/Global_Objects/Infinity"><code>Infinity</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined" title="JavaScript/Reference/Properties/undefined"><code>undefined</code></a></li> -</ul> - -<h3 id="New_methods">New methods</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite"><code>isFinite()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource" title="JavaScript/Reference/Objects/Object/ToSource"><code>toSource()</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call">Function.prototype.call()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply"><code>Function.prototype.apply()</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC">Date.UTC()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear"><code>Date.prototype.getFullYear()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear"><code>Date.prototype.setFullYear()</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds">Date.prototype.getMilliseconds()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds"><code>Date.prototype.setMilliseconds()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear"><code>Date.prototype.getUTCFullYear()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth"><code>Date.prototype.getUTCMonth()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDate"><code>Date.prototype.getUTCDate()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours"><code>Date.prototype.getUTCHours()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes"><code>Date.prototype.getUTCMinutes()</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds">Date.prototype.getUTCSeconds()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds"><code>Date.prototype.getUTCMilliseconds()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString"><code>Date.prototype.toUTCString()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear"><code>Date.prototype.setUTCFullYear()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth"><code>Date.prototype.setUTCMonth()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate"><code>Date.prototype.setUTCDate()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours"><code>Date.prototype.setUTCHours()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes"><code>Date.prototype.setUTCMinutes()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds"><code>Date.prototype.setUTCSeconds()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds"><code>Date.prototype.setUTCMilliseconds()</code></a></li> -</ul> - -<h3 id="Other_new_features">Other new features</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators" title="JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">Strict equality operators</a></li> - <li>Unicode support</li> - <li>A JavaScript Console was introduced.</li> -</ul> - -<h2 id="Changed_functionality_in_JavaScript_1.3">Changed functionality in JavaScript 1.3</h2> - -<ul> - <li>Changes to <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date" title="JavaScript/Reference/Global_Objects/Date"><code>Date</code></a> to conform with ECMA-262 - - <ul> - <li>New constructor <code>Date(year, month, day, [, - <i>hours</i> - [ - - <i>, minutes</i> - [ - - <i>, seconds</i> - [ - - <i>, milliseconds</i> - ]]]])</code></li> - <li>Additional method parameters: - <ul> - <li><code>setMonth(month[, date])</code></li> - <li><code>setHours(hours[, min[, sec[, ms]]])</code></li> - <li><code>setMinutes(min[, sec[, ms]])</code></li> - <li><code>setSeconds(sec[, ms])</code></li> - </ul> - </li> - </ul> - </li> - <li>The length of an array (property length) is now an unsigned, 32-bit integer.</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push"><code>Array.prototype.push()</code></a>: In JavaScript 1.2, the <code>push</code> method returned the last element added to an array. Under JavaScript 1.3, <code>push</code> returns the new length of the array.</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice"><code>Array.prototype.splice()</code></a>: In JavaScript 1.2, the <code>splice</code> method returned the element removed, if only one element was removed (<code>howMany</code> parameter is <code>1</code>). In JavaScript 1.3, <code>splice</code> always returns an array containing the removed elements. If one element is removed, an array of one element is returned.</li> - <li><a href="http://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#replace">Changes</a> to <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace"><code>String.prototype.replace()</code></a>.</li> - <li><a href="http://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#Boolean">Changes</a> to the <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><code>Boolean</code></a> object.</li> - <li><a href="http://web.archive.org/web/20000815081640/http://developer.netscape.com/docs/manuals/communicator/jsref/js13.html#toString">Changes</a> to <code>toString()</code>.</li> -</ul> - -<h2 id="Non-ECMA-262_features_of_JavaScript_1.3">Non-ECMA-262 features of JavaScript 1.3</h2> - -<p>The following is a comparison between the June 1998 version of ECMA-262 and JavaScript 1.3. The following features were not part of the standard at that time, but implemented in JavaScript 1.3.</p> - -<h3 id="Keywords_and_operators">Keywords and operators</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">Strict equality operators</a></li> - <li>vertical tab (<code>\v</code> or <code>\u000B</code>) as an escape sequence.</li> -</ul> - -<h3 id="Statements">Statements</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/label"><code>label</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/switch"><code>switch</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/do...while"><code>do...while</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/export"><code>export</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/import"><code>import</code></a></li> -</ul> - -<h3 id="Built-in_objects">Built-in objects</h3> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><code>RegExp</code></a></li> -</ul> - -<h3 id="Methods_of_built-in_objects">Methods of built-in objects</h3> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource">toSource()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch">Object.prototype.watch()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/unwatch"><code>Object.prototype.unwatch()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arity"><code>Function.arity</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply">Function.prototype.apply()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call">Function.prototype.call()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat">Array.prototype.concat()</a></code></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop">Array.prototype.pop()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push"><code>Array.prototype.push()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift"><code>Array.prototype.shift()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift"><code>Array.prototype.unshift()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice"><code>Array.prototype.slice()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice"><code>Array.prototype.splice()</code></a></li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat">String.prototype.concat()</a></code></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match"><code>String.prototype.match()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search"><code>String.prototype.search()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice"><code>String.prototype.slice()</code></a></li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr"><code>String.prototype.substr()</code></a></li> -</ul></script></pre> diff --git a/files/ja/web/javascript/new_in_javascript/1.4/index.html b/files/ja/web/javascript/new_in_javascript/1.4/index.html deleted file mode 100644 index 560e55f636..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.4/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: JavaScript 1.4 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.4 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.4 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>The following is a changelog for JavaScript 1.4, which was only used for Netscape's server side JavaScript released in 1999. The old Netscape documentation can be found on <a href="http://web.archive.org/web/20040802225238/http://developer.netscape.com/docs/manuals/js/core/jsref/index.htm">archive.org</a>.</p> - -<h2 id="New_features_in_JavaScript_1.4">New features in JavaScript 1.4</h2> - -<ul> - <li>Exception handling (<a href="/en-US/docs/Web/JavaScript/Reference/Statements/throw"><code>throw</code></a> and <a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch"><code>try...catch</code></a>)</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/in">in</a></code> operator</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/instanceof"><code>instanceof</code></a> operator</li> -</ul> - -<h2 id="Changed_functionality_in_JavaScript_1.4">Changed functionality in JavaScript 1.4</h2> - -<ul> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval" title="JavaScript/Reference/Global_Functions/Eval">eval()</a></code> changes (cannot be called indirectly and no longer a method of <code>Object</code>)</li> - <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments" title="JavaScript/Reference/Functions/arguments">arguments</a></code> not a property of functions</li> - <li>Deprecated <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arity" title="JavaScript/Reference/Objects/Function/Arity">Function.arity</a></code> in favor of <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length" title="JavaScript/Reference/Objects/Function/length">Function.length</a></code></li> - <li>Changes to <a href="/en-US/docs/Archive/Web/LiveConnect">LiveConnect</a></li> -</ul> diff --git a/files/ja/web/javascript/new_in_javascript/1.5/index.html b/files/ja/web/javascript/new_in_javascript/1.5/index.html deleted file mode 100644 index 33868c064b..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.5/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: JavaScript 1.5 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.5 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.5 ---- -<p>{{jsSidebar("New_in_JS")}}</p> - -<p>JavaScript バージョン 1.5 では以下の新機能や改良点が盛り込まれています。</p> - -<p><strong>ランタイムエラー</strong><br> - ランタイムエラーが例外として報告されるようになっています。</p> - -<p><strong>数値の書式の強化</strong><br> - Number.prototype.toExponential、Number.prototype.toFixed および Number.prototype.toPrecision メソッドの導入により、数値の書式が強化されています。<a href="/ja/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Number_Object" title="ja/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Number_Object">Number オブジェクト</a> のページを参照してください。</p> - -<p><strong>正規表現の強化</strong><br> - 以下のように正規表現が強化されています。</p> - -<ul> - <li>量指定子 (+、*、?、{}) は ? を続けることでスキップ優先を指定することができるようになっています。<a href="/ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8" title="ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8">正規表現パターンの記述</a> のページの ? の項目を参照してください。</li> - <li>キャプチャする括弧 (x) の代わりにキャプチャしない括弧 (?:x) を使用することができます。キャプチャしない括弧を使用すると、マッチした部分式に対して後方参照ができなくなります。<a href="/ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8" title="ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8">正規表現パターンの記述</a> のページの (?:x) の項目を参照してください。</li> - <li>肯定的および否定的な先読み表現がサポートされています。どちらもマッチさせた文字列に続くものに依存したマッチの表現です。<a href="/ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8" title="ja/Core_JavaScript_1.5_Guide/Writing_a_Regular_Expression_Pattern#.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97.E3.81.AE.E4.BD.BF.E7.94.A8">正規表現パターンの記述</a> のページの x(?=y) および x(?!y) の項目を参照してください。</li> - <li>m フラグが追加され、複数行に対してもマッチする正規表現を指定できるようになりました。<a href="/ja/Core_JavaScript_1.5_Guide/Working_with_Regular_Expressions/Advanced_Searching_With_Flags" title="ja/Core_JavaScript_1.5_Guide/Working_with_Regular_Expressions/Advanced_Searching_With_Flags">フラグを用いた高度な検索</a> のページを参照してください。</li> -</ul> - -<p><strong>ある条件下での関数の宣言</strong><br> - if 節の中で関数を宣言できるようになっています。<a href="/ja/Core_JavaScript_1.5_Guide/Defining_Functions" title="ja/Core_JavaScript_1.5_Guide/Defining_Functions">関数の定義</a> のページを参照してください。</p> - -<p><strong>関数式</strong><br> - 式の中で関数を宣言できるようになっています。<a href="/ja/Core_JavaScript_1.5_Guide/Defining_Functions" title="ja/Core_JavaScript_1.5_Guide/Defining_Functions">関数の定義</a> のページを参照してください。</p> - -<p><strong>複数の catch 節</strong><br> - try...catch 文における複数の catch 節をサポートしています。<a href="/ja/Core_JavaScript_1.5_Guide/Exception_Handling_Statements/try...catch_Statement#catch_.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF" title="ja/Core_JavaScript_1.5_Guide/Exception_Handling_Statements/try...catch_Statement#catch_.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF">catch ブロック</a> のページを参照してください。</p> - -<p><strong>ゲッタとセッタ</strong><br> - オブジェクトにゲッタとセッタを追加できるようになっています。この機能は JavaScript の C での実装でのみ利用可能です。<a href="/ja/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters" title="ja/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters">ゲッタとセッタの定義</a> のページを参照してください。</p> - -<p><strong>定数</strong><br> - 読み取り専用の名前付き定数がサポートされています。この機能は JavaScript の C での実装でのみ利用可能です。<a href="/ja/Core_JavaScript_1.5_Guide/Constants" title="ja/Core_JavaScript_1.5_Guide/Constants">定数</a> のページを参照してください。</p> diff --git a/files/ja/web/javascript/new_in_javascript/1.6/index.html b/files/ja/web/javascript/new_in_javascript/1.6/index.html deleted file mode 100644 index c1985c16ab..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.6/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: JavaScript 1.6 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.6 -tags: - - E4X - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.6 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>JavaScript 1.6 では次のような新機能が導入されています。E4X、<code>Array</code> の新しいメソッド、そして Array および String の汎用化です。</p> - -<p>JavaScript 1.6 は <a href="/ja/Firefox_1.5_for_developers" title="ja/Firefox_1.5_for_developers">Firefox 1.5</a> 以降でサポートされています。</p> - -<h3 id="E4X" name="E4X">E4X</h3> - -<p>ECMAScript for XML (<a href="/ja/E4X" title="ja/E4X">E4X</a>) は <a href="/ja/JavaScript" title="ja/JavaScript">JavaScript</a> 内で <a href="/ja/XML" title="ja/XML">XML</a> コンテンツを作成したり処理したりする強力な技術です。私たちは、既存の <a href="/ja/DOM" title="ja/DOM">DOM</a> との透過的な統合など、E4X サポートの向上を続けていくつもりですが、XML ベースのウェブアプリケーションの開発者は Firefox 1.5 での E4X サポートの恩恵を受けることができます。</p> - -<p>E4X を利用する際も、あなたは標準的な MIME タイプを使用することができます:</p> - -<pre><script type="text/javascript"> -</pre> - -<p>しかし E4X の文法は、スクリプトを HTML コメント (<code><span class="nowiki"><!--...--></span></code>) 内に埋め込むという、古いブラウザからスクリプトを見えなくするための一般的な方法と衝突する可能性があります。E4X はまた、スクリプトを XML の CDATA セクション (<code><![CDATA{{ mediawiki.external('...') }}]></code>) 内に埋め込むという、"<" や ">" という記号を使えるようにするよりモダンな方法 (これは HTML には適用できないので注意) とも衝突する可能性があります。よくわからない文法エラーが生じた場合は MIME タイプに "; e4x=1" を追加してください:</p> - -<pre><script type="text/javascript; e4x=1"> -</pre> - -<p>拡張機能のスクリプトは常に HTML コメントを E4X リテラルとして扱うことに注意してください。つまり、"e4x=1" が暗黙的に指定されている状態です。</p> - -<p>E4X については、<a href="/ja/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X" title="ja/Core_JavaScript_1.5_Guide/Processing_XML_with_E4X">Processing XML with E4X</a> で説明されています。</p> - -<h3 id="Array_.E3.81.AE.E6.8B.A1.E5.BC.B5" name="Array_.E3.81.AE.E6.8B.A1.E5.BC.B5">Array の拡張</h3> - -<p><code><a href="/ja/JavaScript/Reference/Global_Objects/Array" title="ja/JavaScript/Reference/Global_Objects/Array">Array</a></code> のメソッドが新しく 7 つ追加されました。これらは項目の場所に関するメソッドと反復的なメソッドの 2 つに分類可能です。項目の場所に関するメソッドは:</p> - -<ul> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/indexOf" title="ja/JavaScript/Reference/Global_Objects/Array/indexOf">indexOf()</a></code> - 与えられた項目が最初に出現するインデックスを返す。</li> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/lastIndexOf" title="ja/JavaScript/Reference/Global_Objects/Array/lastIndexOf">lastIndexOf()</a></code> - 与えられた項目が最後に出現するインデックスを返す。</li> -</ul> - -<p>反復的なメソッドは:</p> - -<ul> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/every" title="ja/JavaScript/Reference/Global_Objects/Array/every">every()</a></code> - 配列の各項目において関数を実行し、訪れることのできたすべての項目について関数が true を返した場合に true を返す。</li> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/filter" title="ja/JavaScript/Reference/Global_Objects/Array/filter">filter()</a></code> - 配列の各項目において関数を実行し、関数が true を返した項目全体からなる配列を返す。</li> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/forEach" title="ja/JavaScript/Reference/Global_Objects/Array/forEach">forEach()</a></code> - 配列の各項目において関数を実行する。</li> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/map" title="ja/JavaScript/Reference/Global_Objects/Array/map">map()</a></code> - 配列の各項目において関数を実行し、その結果の配列を返す。</li> - <li><code><a href="/ja/JavaScript/Reference/Global_Objects/Array/some" title="ja/JavaScript/Reference/Global_Objects/Array/some">some()</a></code> - 配列の各項目において関数を実行し、訪れることのできたどれかの項目について関数が true を返した場合に true を返す。</li> -</ul> - -<p>詳しい情報については、<a href="/ja/Core_JavaScript_1.5_Guide/Working_with_Arrays#Introduced_in_JavaScript_1.6" title="ja/Core_JavaScript_1.5_Guide/Working_with_Arrays#Introduced_in_JavaScript_1.6">Working with Arrays</a>、もしくは、Nicholas C. Zakas の <a class="external" href="http://www.webreference.com/programming/javascript/ncz/column4/index.html">Mozilla's New Array Methods</a> という記事を参照してください。</p> - -<h3 id="Array_.E3.81.8A.E3.82.88.E3.81.B3_String_.E3.81.AE.E6.B1.8E.E7.94.A8.E5.8C.96" name="Array_.E3.81.8A.E3.82.88.E3.81.B3_String_.E3.81.AE.E6.B1.8E.E7.94.A8.E5.8C.96">Array および String の汎用化</h3> - -<p>時々、配列のメソッドを文字列に適用したい場合があり、次のようにして、文字列を文字の配列として取り扱うことがあります。例えば、変数 <var>str</var> に含まれる文字がすべて英字であることをチェックするには、次のように書くでしょう:</p> - -<pre>function isLetter(character) { - return (character >= "a" && character <= "z"); -} - -if (Array.prototype.every.call(str, isLetter)) - alert("文字列 '" + str + "' は英字のみ含んでいます!"); -</pre> - -<p>この記法はかなり無駄が多く、JavaScript 1.6 では{{ 原語併記("汎用的", "generic") }}な簡易表記が導入されました:</p> - -<pre>if (Array.every(str, isLetter)) - alert("文字列 '" + str + "' は英字のみ含んでいます!"); -</pre> - -<p>同様に String のメソッドをどんなオブジェクトにも簡単に適用できます:</p> - -<pre>var num = 15; -alert(String.replace(num, /5/, '2')); -</pre> - -<p><a href="/ja/Core_JavaScript_1.5_Guide/Working_with_Arrays#Working_with_Array-like_objects" title="ja/Core_JavaScript_1.5_Guide/Working_with_Arrays#Working_with_Array-like_objects">Working with Array-like objects</a> も参照してください。</p> diff --git a/files/ja/web/javascript/new_in_javascript/1.7/index.html b/files/ja/web/javascript/new_in_javascript/1.7/index.html deleted file mode 100644 index 6750aa396b..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.7/index.html +++ /dev/null @@ -1,558 +0,0 @@ ---- -title: JavaScript 1.7 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.7 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.7 ---- -<div> -<div>{{jsSidebar("New_in_JS")}}</div> -</div> - -<p>JavaScript 1.7 はいくつかの新機能、特に{{ 原語併記("ジェネレータ", "generators") }}、{{ 原語併記("イテレータ", "iterators") }}、{{ 原語併記("配列内包", "array comprehensions") }}、{{ 原語併記("<code>let</code> 式", "<code>let</code> expressions") }}、および{{ 原語併記("分割代入", "destructuring assignment") }} を取り入れた言語アップデートです。<a href="/ja/New_in_JavaScript_1.6" title="ja/New_in_JavaScript_1.6">JavaScript 1.6</a> のすべての機能も含まれています。</p> - -<p>JavaScript 1.7 のサポートは Firefox 2 に導入されました。</p> - -<p>この記事に含まれるコードの例は JavaScript シェルから実験できます。<a href="/ja/Introduction_to_the_JavaScript_shell" title="ja/Introduction_to_the_JavaScript_shell">Introduction to the JavaScript shell</a> を読み、シェルのビルド方法と使い方を学んでください。</p> - -<h2 id="JavaScript_1.7_.E3.82.92.E4.BD.BF.E3.81.86" name="JavaScript_1.7_.E3.82.92.E4.BD.BF.E3.81.86">JavaScript 1.7 を使う</h2> - -<p>JavaScript 1.7 の一部の新機能を使うためには、JavaScript 1.7 が使いたいという宣言が必要です。HTML または XUL コードでは次のコードを使ってください。</p> - -<pre><code><script type="application/javascript;version=1.7"/></code></pre> - -<p><a href="/ja/Introduction_to_the_JavaScript_shell" title="ja/Introduction_to_the_JavaScript_shell">JavaScript シェル</a>を使うときは、コマンドラインで <code>-version 170</code> スイッチを使うか、<code>version()</code> 関数を使って使いたいバージョンを設定する必要があります。</p> - -<pre><code>version(170);</code></pre> - -<p>新しいキーワード "yield" と "let" を使用する必要のある機能は、既存のコードでそれらのキーワードが変数や関数として利用されている恐れがあるため、バージョン 1.7 と宣言しなければ利用できません。新しいキーワードを導入していない機能 (分割代入と配列内包) は、JavaScript のバージョン宣言なしに利用できます。</p> - -<h2 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.A8.E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.A8.E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF">ジェネレータとイテレータ</h2> - -<p>{{ 原語併記("繰り返しの", "iterative") }} アルゴリズム (リストの各要素に同じ処理をしたり、同じデータセットに繰り返し計算を行うなど) を含むコードを開発する際、しばしば計算処理の間その値が維持される必要のある状態変数が使われます。伝統的には、繰り返しのアルゴリズムの介在変数を得るにはコールバック関数を使わなくてはなりません。</p> - -<h3 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF">ジェネレータ</h3> - -<p>フィボナッチ数を計算するこの繰り返しアルゴリズムについて考えてみましょう:</p> - -<pre class="brush:js">function do_callback(num) { - document.write(num + "<br>\n"); -} - -function fib() { - var i = 0, j = 1, n = 0; - while (n < 10) { - do_callback(i); - var t = i; - i = j; - j += t; - n++; - } -} - -fib();</pre> - -<p>このコードはアルゴリズムのそれぞれの繰り返しステップの処理を実行するのにコールバックルーチンを使っています。この場合、それぞれのフィボナッチ数は単純にコンソールに出力されます。</p> - -<p>{{ 原語併記("ジェネレータ", "generators") }} および{{ 原語併記("イテレータ", "iterators") }} は相互に働き、新しく、より良くこれを実行する方法を提供します。ジェネレータを使って書かれたフィボナッチ数ルーチンがどうなっているか見てみましょう:</p> - -<pre class="brush:js">function fib() { - var i = 0, j = 1; - while (true) { - yield i; - var t = i; - i = j; - j += t; - } -} - -var g = fib(); - -for (var i = 0; i < 10; i++) { - document.write(g.next() + "<br>\n"); -}</pre> - -<p><code>yield</code> キーワードを含む関数がジェネレータです。これを呼ぶと、ジェネレータの仮引数は実引数と結び付きますが、本体は実際には評価されません。代わりにジェネレータ・イテレータが返ってきます。ジェネレータ・イテレータの <code>next()</code> メソッドを呼び出すたびに、繰り返しのアルゴリズムが 1 回ずつ実行されます。それぞれのステップでの値は、<code>yield</code> キーワードで指定された値です。<code>yield</code> をアルゴリズムの繰り返しの範囲を示すジェネレータ・イテレータ版の <code>return</code> だと考えましょう。毎回 <code>next()</code> を呼び出すたび、ジェネレータのコードは <code>yield</code> の次の文から再開します。</p> - -<p>あなたはジェネレータ・イテレータを、その <code>next()</code> メソッドを繰り返し呼び出すことで、あなたが望んだ結果の状態にたどりつくまで反復させられます。この例では、私たちが欲しいだけの結果を手に入れるまで <code>g.next()</code> を呼び出し続けることで、私たちはどれだけでも多くのフィボナッチ数を得ることができます。</p> - -<h4 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.82.92.E6.8C.87.E5.AE.9A.E3.81.AE.E6.99.82.E7.82.B9.E3.81.8B.E3.82.89.E5.86.8D.E9.96.8B.E3.81.99.E3.82.8B" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.82.92.E6.8C.87.E5.AE.9A.E3.81.AE.E6.99.82.E7.82.B9.E3.81.8B.E3.82.89.E5.86.8D.E9.96.8B.E3.81.99.E3.82.8B">ジェネレータを指定の時点から再開する</h4> - -<p>一度 <code>next()</code> メソッドを呼び出してジェネレータをスタートさせると、与えた特定の値を最後の <code>yield</code> の結果として扱わせる <code>send()</code> を使うことができます。その際ジェネレータはその次の <code>yield</code> のオペランドを返します。</p> - -<p>ジェネレータを勝手な時点から始めることはできません。特定の値を <code>send()</code> する前に必ず <code>next()</code> でジェネレータをスタートさせなければなりません。</p> - -<div class="note"><strong>注:</strong> 興味深い点として、<code>send(undefined)</code> を呼び出すことは <code>next()</code> を呼び出すことと等価です。しかし <code>send()</code> を呼び出す際、生まれたてのジェネレータを undefined 以外の値からスタートさせようとすると <code>TypeError</code> 例外を引き起こします。</div> - -<h4 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E4.B8.AD.E3.81.A7.E3.81.AE.E4.BE.8B.E5.A4.96" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E4.B8.AD.E3.81.A7.E3.81.AE.E4.BE.8B.E5.A4.96">ジェネレータ中での例外</h4> - -<p>投げさせたい例外の値を渡して <code>throw()</code> メソッドを呼び出すことで、ジェネレータに強制的に例外を投げさせることができます。この例外はその時点の中断されたジェネレータの文脈から、つまりあたかもその時点で一時停止されている <code>yield</code> が <code>throw <em>value</em></code> に置き換わったかのように投げられます。</p> - -<p>もし投げられた例外の処理中に yield に遭遇しなかった場合、その例外は <code>throw()</code> の呼び出し元に伝播し、それ以降 <code>next()</code> を呼び出すと <code>StopIteration</code> が投げられます。</p> - -<h4 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.82.92.E9.96.89.E3.81.98.E3.82.8B" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.82.92.E9.96.89.E3.81.98.E3.82.8B">ジェネレータを閉じる</h4> - -<p>ジェネレータは自分自身を閉じさせる <code>close()</code> メソッドを持っています。ジェネレータを閉じることの効果は:</p> - -<ol> - <li>ジェネレータ内のアクティブなすべての <code>finally</code> 節が実行されます。</li> - <li>もし <code>finally</code> 節が <code>StopIteration</code> 以外の例外を投げた場合、その例外は <code>close()</code> メソッドの呼び出し元に伝播されます。</li> - <li>ジェネレータが終了します。</li> -</ol> - -<h4 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AE.E4.BE.8B" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AE.E4.BE.8B">ジェネレータの例</h4> - -<p>このコードは 100 回ループするごとに yield するジェネレータを走らせます。</p> - -<pre class="brush:js">var gen = generator(); - -function driveGenerator() { - if (gen.next()) { - window.setTimeout(driveGenerator, 0); - } else { - gen.close(); - } -} - -function generator() { - while (i < something) { - /** 何か **/ - - ++i; - /** 100 周ごとに yield **/ - if ((i % 100) == 0) { - yield true; - } - } - - yield false; -}</pre> - -<h3 id=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF" name=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF">イテレータ</h3> - -<p>{{ 原語併記("イテレータ", "iterator") }} とは、データへの繰り返しの処理をしやすくする特別なオブジェクトのことです。</p> - -<p>普通の使い方では、イテレータオブジェクトは「目に見えません」。つまりあなたはイテレータオブジェクトを明示的に操作する必要はなく、代わりに JavaScript の <a href="/ja/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements" title="ja/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements"><code>for...in</code> や <code>for each...in</code> 文</a>を使うことで、オブジェクトのキーや値への繰り返し処理を自然と行うことができます。</p> - -<pre class="brush:js">var objectWithIterator = getObjectSomehow(); - -for (var i in objectWithIterator) { - document.write(objectWithIterator[i] + "<br>\n"); -}</pre> - -<p>もし独自のイテレータオブジェクトを実装したり、イテレータを直接操作する何か別の必要があったりするならば、あなたは <code>next</code> メソッドと <code>StopIteration</code> 例外、そして <code>__iterator__</code> プロパティについて知る必要があります。</p> - -<p>あなたは <code>Iterator(<em>objectname</em>)</code> を呼び出すことで、あるオブジェクトのイテレータを生成することができますが、そのようなあるオブジェクトのイテレータは、そのオブジェクトの <code>__iterator__</code> メソッドを呼び出すことで見つけられます。もし <code>__iterator__</code> が存在しなければ、デフォルトのイテレータが生成されます。デフォルトのイテレータは、普通の <code>for...in</code> や <code>for each...in</code> のモデルに基づいて、オブジェクトのプロパティを yield します。もしあなたがカスタマイズしたイテレータを提供したいならば、<code>__iterator__</code> メソッドをあなたのカスタマイズしたイテレータのインスタンスを返すように上書きしてください。スクリプトからオブジェクトのイテレータを得るには、直接 <code>__iterator__</code> プロパティにアクセスせず <code>Iterator(<em>obj</em>)</code> を使ってください。後者は配列 (Array) に対しても使えますが、前者は使えません。</p> - -<p>一度イテレータを手に入れれば、そのイテレータの <code>next()</code> メソッドを呼び出すことで簡単にオブジェクトの次の項目を取得することができます。もしデータが残っていない場合は、<code>StopIteration</code> 例外が投げられます。</p> - -<p>ここに直接的なイテレータ操作の単純な例を示します:</p> - -<pre class="brush:js">var obj = {name:"Jack Bauer", username:"JackB", id:12345, agency:"CTU", region:"Los Angeles"}; - -var it = Iterator(obj); - -try { - while (true) { - print(it.next() + "\n"); - } -} catch (err if err instanceof StopIteration) { - print("レコードの終わり。\n"); -} catch (err) { - print("不明なエラー: " + err.description + "\n"); -}</pre> - -<p>このプログラムの出力は次のようになります:</p> - -<pre>name,Jack Bauer -username,JackB -id,12345 -agency,CTU -region,Los Angeles -レコードの終わり。</pre> - -<p>イテレータを生成する際、オプションとして 2 つ目の引数を指定することができます。この引数は真偽値で、<code>next()</code> メソッドを呼び出すごとにキーの方だけを返してほしいかどうかを示します。このパラメータはユーザー定義の<code>__iterator__</code> 関数に唯一の引数として渡されます。上のサンプルで <code>var it = Iterator(obj);</code> を <code>var it = Iterator(obj, true);</code> に変えると、以下のような出力になります:</p> - -<pre>name -username -id -agency -region -レコードの終わり。 -</pre> - -<p>どちらの場合でも、データが返ってくる実際の順番はその実装によって変わります。データの順番は無保証です。</p> - -<p>イテレータは、その中にあなたが気づいていないデータが含まれているかもしれないオブジェクトも含め、オブジェクト中のデータをスキャンする手軽な方法です。これは特に、アプリケーションが予想していないデータを保存する必要がある場合に便利です。</p> - -<h2 id=".E9.85.8D.E5.88.97.E5.86.85.E5.8C.85" name=".E9.85.8D.E5.88.97.E5.86.85.E5.8C.85">配列内包</h2> - -<p>{{ 原語併記("配列内包", "array comprehensions") }} は、配列のパワフルな初期化を実行する簡便な方法を提供するジェネレータの使い方です。例えば:</p> - -<pre class="brush:js">function range(begin, end) { - for (let i = begin; i < end; ++i) { - yield i; - } -}</pre> - -<p><code>range()</code> は <var>begin</var> から <var>end</var> までのすべての数値を返すジェネレータです。このように定義すると、私たちはこれを次のように使うことができます:</p> - -<pre><code>var ten_squares = [i * i for each (i in range(0, 10))];</code></pre> - -<p>これは新しい配列 <var>ten_squares</var> を、<code>0..9</code> の範囲にある値の平方を含むようあらかじめ初期化します。</p> - -<p>あなたは配列を初期化する際、任意の条件文を使うことができます。もしある配列を 0 と 20 の間にある偶数が含まれるように初期化したいならば、次のコードを使うことができます:</p> - -<pre>var evens = [i for each (i in range(0, 21)) if (i % 2 == 0)];</pre> - -<p>JavaScript 1.7 以前では、これは次のようにコーディングしなければならないでしょう:</p> - -<pre class="brush:js">var evens = []; - -for (var i = 0; i <= 20; i++) { - if (i % 2 == 0) - evens.push(i); -}</pre> - -<p>配列内包はより一層コンパクトであるだけでなく、一度そのコンセプトに精通してしまえば、実際のところ読みやすいものです。</p> - -<h3 id=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87" name=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87">スコープの規則</h3> - -<p>配列内包は暗黙的な <code>let</code> 宣言と同様に、角カッコの内側にあるすべてを含んだその周りに暗黙的なブロックを持ちます。</p> - -<p><em>Add details.</em></p> - -<h2 id="let_.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97" name="let_.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97"><code>let</code> を使ったブロックスコープ</h2> - -<p>データや関数のブロックスコープを管理する <code>let</code> を使うにはいくつかの方法があります:</p> - -<ul> - <li><strong><code>let</code> 文</strong> は、あるブロックのスコープ内で、ブロックの外にある同じ名前の変数の値に影響を与えることなく、変数と値を関連付ける手段を提供します。</li> - <li><strong><code>let</code> 式</strong> は、1 つの式だけに対して変数スコープを確立することができます。</li> - <li><strong><code>let</code> 定義</strong> は、その定義が行われたブロックにスコープが拘束された変数を定義します。この構文は <code>var</code> に対し使われる構文に非常によく似ています。</li> - <li>また、<code>let</code> を使って <code>for</code> ループの文脈内でのみ存在しうる変数を確立することができます。</li> -</ul> - -<h3 id="let_.E6.96.87" name="let_.E6.96.87"><code>let</code> 文</h3> - -<p><code>let</code> 文は変数に対するローカルスコープを提供します。<code>let</code> 文はコードのある 1 つのブロックのレキシカルスコープに 0 以上の変数を結びつけることによって働き、それ以外は<a href="/ja/JavaScript/Reference/Statements/block" title="ja/JavaScript/Reference/Statements/block">ブロック文</a>と全く同じです。特に、<code>let</code> 文の内側で <code>var</code> を使って定義された変数のスコープは、<code>let</code> 文の外側でそれが定義された場合と同じであり、そのような変数は従来通り関数スコープを持つことに注意してください。</p> - -<p>例えば:</p> - -<pre class="brush:js">var x = 5; -var y = 0; - -let ( x = x + 10, y = 12 ) { - print(x+y + "\n"); -} - -print( (x + y) + "\n" );</pre> - -<p>このプログラムからの出力は次のようになるでしょう:</p> - -<pre>27 -5</pre> - -<p>コードブロックに関するルールは JavaScript の他のコードブロックと同じです。<code>let</code> 宣言を使って確立されたブロック自身のローカル変数を持っているかもしれません。</p> - -<div class="note"><strong>注:</strong> <code>let</code> 文の構文を使う時、<code>let</code> の後の丸カッコは必須です。これを入れないと構文エラーとなります。</div> - -<div>{{ 英語版章題("Scoping rules 2") }}</div> - -<h4 id=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_2" name=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_2">スコープの規則</h4> - -<p><code>let</code> を使って定義された変数のスコープは、<code>let</code> ブロック自身とその内部に含まれるすべてのブロックです。ただしそれらのブロックが同じ名前で変数を定義している場合を除きます。</p> - -<h3 id="let_.E5.BC.8F" name="let_.E5.BC.8F"><code>let</code> 式</h3> - -<p><code>let</code> を使ってある 1 つの式だけに対してスコープを持つ変数を確立することができます:</p> - -<pre class="brush:js">var x = 5; -var y = 0; - -document.write( let(x = x + 10, y = 12) x + y + "<br>\n"); -document.write( x + y + "<br>\n" );</pre> - -<p>結果として出力されるのは:</p> - -<pre>27 -5</pre> - -<p>この場合、変数 <var>x</var>、<var>y</var> のそれぞれ <code>x+10</code>、<code>12</code> との結び付きは、式 <code>x+y</code> に対してのみスコープを持ちます。</p> - -<h4 id=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_3" name=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_3">スコープの規則</h4> - -<p>以下の <code>let</code> 式があったとすると:</p> - -<pre><code>let (<var>decls</var>) <var>expr</var></code></pre> - -<p><var>expr</var> の周りに暗黙的なブロックが生成されます。</p> - -<h3 id="let_.E5.AE.9A.E7.BE.A9" name="let_.E5.AE.9A.E7.BE.A9"><code>let</code> 定義</h3> - -<p><code>let</code> キーワードはブロック内で変数を定義するのにも使うことができます。</p> - -<div class="note"><strong>注:</strong> もしあなたがより興味深い <code>let</code> 定義の使用例を知っているならば、どうぞここに追加することを検討してみてください。</div> - -<pre class="brush:js">if (x > y) { - let gamma = 12.7 + y; - i = gamma * x; -}</pre> - -<p><code>let</code> 文・式・定義はしばしば、内部関数が使われる際にコードを簡潔にさせることがあります。</p> - -<pre class="brush:js">var list = document.getElementById("list"); -for (var i = 1; i <= 5; i++) { - var item = document.createElement("LI"); - - item.appendChild( document.createTextNode("Item " + i) ); - let j = i; - - item.onclick = function (ev) { - alert("Item " + j + " is clicked."); - }; - - list.appendChild(item); -}</pre> - -<p>上の例は、内部の無名関数の 5 つのインスタンスがそれぞれ変数 <code>j</code> の異なる 5 つのインスタンスを参照しているために、意図通りに動きます。もしこれで <code>let</code> を <code>var</code> に置き換えたり、変数 <code>j</code> を削除して単純に <code>i</code> を内部関数で使うと、これは意図通りには動かないことに注意してください。</p> - -<h4 id=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_4" name=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_4">スコープの規則</h4> - -<p><code>let</code> によって宣言された変数は、その定義があったブロックと、その変数が再定義されていないすべてのサブブロックにスコープを持ちます。この場合、<code>let</code> は <code>var</code> に非常によく似た働きをします。おもな違いは <code>var</code> 変数のスコープがそれを囲む関数全体であることです:</p> - -<pre class="brush:js">function varTest() { - var x = 31; - if (true) { - var x = 71; // 同じ変数! - alert(x); // 71 - } - alert(x); // 71 -} - -function letTest() { - let x = 31; - - if (true) { - let x = 71; // 違う変数 - alert(x); // 71 - } - alert(x); // 31 -}</pre> - -<p><code>=</code> の右辺の式はブロックの内側になります。これは <code>let</code> 式や <code>let</code> 文のスコープの仕方と異なります:</p> - -<pre class="brush:js">function letTests() { - let x = 10; - - // let 文 - let (x = x + 20) { - alert(x); // 30 - } - - // let 式 - alert(let (x = x + 20) x); // 30 - - // let 定義 - { - let x = x + 20; // ここでの x は undefined と評価される - alert(x); // undefined + 20 ==> NaN - } -}</pre> - -<p>プログラムやクラス内では、<code>let</code> は <code>var</code> がするようにグローバルオブジェクトのプロパティを生成したりはせず、代わりにその文脈で文を評価する際に生成される暗黙的なブロックにプロパティを生成します。これが本質的に意味するのは、<code>let</code> はそれ以前に <code>var</code> を使って定義された変数を上書きできないということです。例えば:</p> - -<pre class="brush:js">// FF 2.0 b1 ではうまく動きません。"global" ではなく "42" を返してしまいます。 -var x = 'global'; -let x = 42; -document.write( this.x + "<br>\n" );</pre> - -<p>このコードによって表示される出力は "42" ではなく、"global" です。</p> - -<p>{{ 原語併記("<b>暗黙的なブロック</b>", "implicit block") }} とは、波カッコで囲まれていないブロックのことで、JavaScript エンジンによって暗黙的に生成されます。</p> - -<p>関数内で <code>eval()</code> によって実行された <code>let</code> は、<code>var</code> がするように variable object (activation object or innermost binding rib) にプロパティを生成しません。その代りに、そのプログラムで文を評価する際に生成される暗黙的なブロックにプロパティを生成します。これは <code>eval()</code> がプログラムに作用する性質と前述のルールによる結果です。</p> - -<p>別の言い方をすれば、コードを実行するのに <code>eval()</code> を使う際、そのコードは独立したプログラムとみなされ、そのコードの周りに暗黙的なブロックを持つのです。</p> - -<h3 id="for_.E3.83.AB.E3.83.BC.E3.83.97.E4.B8.AD.E3.81.A7.E3.81.AE_let_.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E5.A4.89.E6.95.B0" name="for_.E3.83.AB.E3.83.BC.E3.83.97.E4.B8.AD.E3.81.A7.E3.81.AE_let_.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E5.A4.89.E6.95.B0"><code>for</code> ループ中での <code>let</code> スコープ変数</h3> - -<p><code>let</code> キーワードは単に <code>var</code> でやるようにして、<code>for</code> ループのスコープ内で局所的に変数を結びつけることにも使うことができます。</p> - -<pre class="brush:js">// obj を追加する -var i = 0; - -for ( let i = i; i < 10; i++ ) - document.write(i + "<br>\n"); - - for ( let [name,value] in obj ) - document.write("名前: " + name + ", 値: " + value + "<br>\n");</pre> - -<h4 id=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_5" name=".E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.81.AE.E8.A6.8F.E5.89.87_5">スコープの規則</h4> - -<pre><code>for (let <var>expr1</var>; <var>expr2</var>; <var>expr3</var>) <var>statement</var></code></pre> - -<p>この例で、<var>expr2</var>、<var>expr3</var> と <var>statement</var> は、<code>let <var>expr1</var></code> によって宣言されたブロックローカルな変数を含む暗黙的なブロックに囲まれます。これは上の 1 つ目のループで実証しています。</p> - -<pre class="eval">for (let <var>expr1</var> in <var>expr2</var>) <var>statement</var> -for each(let <var>expr1</var> in <var>expr2</var>) <var>statement</var></pre> - -<p>これら両方の場合では、それぞれ <var>statement</var> を含む暗黙的なブロックができます。1 つ目の方は上の 2 つ目のループで示しています。</p> - -<h2 id=".E5.88.86.E5.89.B2.E4.BB.A3.E5.85.A5" name=".E5.88.86.E5.89.B2.E4.BB.A3.E5.85.A5">分割代入</h2> - -<p>{{ 原語併記("分割代入", "destructuring assignment") }} は、配列やオブジェクトのリテラルの構造とそっくりの構文を使って、配列やオブジェクトからデータを抽出することを可能にします。</p> - -<p>配列やオブジェクトのリテラル式は、データのアドホックな (その場限りの) 詰め合わせを作る簡単な方法を提供します。一度そのようなデータの詰め合わせを作ってしまえば、あなたはそれを使いたいように使うことができます。関数から返すことさえできます。</p> - -<p>分割代入を使うと、次の節の例で示すようなさまざまな興味深いことができるようになりますが、特に便利なのは、一つの文によって全体の構造を読み込むことができるという点です。</p> - -<p>この能力は Perl や Python などの言語に存在する機能に似ています。</p> - -<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2> - -<p>分割代入は使用例を通じて説明するのが一番なので、ここではあなたが通読して学ぶためのいくつかの例を紹介します。</p> - -<h3 id=".E4.B8.80.E6.99.82.E5.A4.89.E6.95.B0.E3.81.AE.E4.BD.BF.E7.94.A8.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B" name=".E4.B8.80.E6.99.82.E5.A4.89.E6.95.B0.E3.81.AE.E4.BD.BF.E7.94.A8.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B">一時変数の使用を避ける</h3> - -<p>分割代入を使えば、例えば値を交換することができます:</p> - -<pre class="brush:js">var a = 1; -var b = 3; - -[a, b] = [b, a];</pre> - -<p>このコードを実行後、 <var>b</var> は 1 に、<var>a</var> は 3 になります。分割代入がなければ、2 つの値の交換には一時変数 (あるいは一部の低級言語では <a class="external" href="http://ja.wikipedia.org/wiki/XOR%E4%BA%A4%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0">XOR 交換のトリック</a>) が必要になります。</p> - -<p>同様に、3 つ以上の変数を順に交換することにも使えます。</p> - -<pre class="brush:js">var a = 'o'; -var b = "<span style='color:green;'>o</span>"; -var c = 'o'; -var d = 'o'; -var e = 'o'; -var f = "<span style='color:blue;'>o</span>"; -var g = 'o'; -var h = 'o'; - -for (lp = 0; lp < 40; lp++) { - [a, b, c, d, e, f, g, h] = [b, c, d, e, f, g, h, a]; - document.write( a + '' + b + '' + c + '' + d + '' + e + '' + f + '' + g + '' + h + '' + "<br />"); -}</pre> - -<p>このコードを実行すると、変数が循環する様子をカラフルな視覚情報として見ることができます。</p> - -<p>上で出てきたフィボナッチ数のジェネレータの例に戻ってみると、"i" と "j" の新しい値を単一のグループ代入文で計算することによって、一時変数 "t" を除去することができます。</p> - -<pre>function fib() { - var i = 0, j = 1; - while (true) { - yield i; - [i, j] = [j, i + j]; - } -} - -var g = fib(); - -for (let i = 0; i < 10; i++) - print(g.next());</pre> - -<h3 id=".E8.A4.87.E6.95.B0.E3.81.AE.E5.80.A4.E3.82.92.E8.BF.94.E3.81.99" name=".E8.A4.87.E6.95.B0.E3.81.AE.E5.80.A4.E3.82.92.E8.BF.94.E3.81.99">複数の値を返す</h3> - -<p>分割代入のおかげで、関数は複数の値を返すことができます。関数から配列を返すこと自体はいつでもできたものの、分割代入はさらなる柔軟性を提供します。</p> - -<pre><code>function f() { - return [1, 2]; -}</code></pre> - -<p>見ての通り、すべての返り値を角カッコで囲んだ、配列に似た構文を使ってその結果を返します。この方法で任意の数の返り値を返すことができます。この例では、<code>f()</code> はその出力として <code>{{ mediawiki.external('1, 2') }}</code> を返します。</p> - -<pre><code>var a, b; -[a, b] = f(); -document.write ("A is " + a + " B is " + b + "<br>\n");</code></pre> - -<p><code>['a, b'] = f()</code> というコマンドは、関数の返り値を角カッコ中の変数に順番に代入します。<var>a</var> は 1 にセットされ、<var>b</var> は 2 にセットされます。</p> - -<p>また、返り値を配列として受け取ることもできます。</p> - -<pre>var a = f(); -document.write ( "A is " + a );</pre> - -<p>この場合、<var>a</var> は値 1 と 2 を含む配列です。</p> - -<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E6.A8.AA.E6.96.AD.E3.81.97.E3.81.A6.E3.83.AB.E3.83.BC.E3.83.97.E3.81.99.E3.82.8B" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E6.A8.AA.E6.96.AD.E3.81.97.E3.81.A6.E3.83.AB.E3.83.BC.E3.83.97.E3.81.99.E3.82.8B">オブジェクトを横断してループする</h3> - -<p>オブジェクトからデータを取り出すために、分割代入を使うこともできます:</p> - -<pre class="brush:js">let obj = { width: 3, length: 1.5, color: "orange" }; - -for (let[name, value] in Iterator(obj)) { - document.write ( "Name: " + name + ", Value: " + value + "<br>\n" ); -}</pre> - -<p>これは、オブジェクト <var>obj</var> の全てのキー/値の組についてループされ、それらの名前と値を表示します。この場合、出力は以下のようになります:</p> - -<pre>Name: width, Value: 3 -Name: length, Value: 1.5 -Name: color, Value: orange</pre> - -<p><code>obj</code> を囲む <code>Iterator()</code> は、JavaScript 1.7 では必須ではありません。しかし、<a href="/ja/New_in_JavaScript_1.8" title="ja/New_in_JavaScript_1.8">JavaScript 1.8</a> では必須になるでしょう。これは配列での分割代入を可能にするためです({{ Bug(366941) }} を参照)。</p> - -<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E9.85.8D.E5.88.97.E3.82.92.E6.A8.AA.E6.96.AD.E3.81.97.E3.81.A6.E3.83.AB.E3.83.BC.E3.83.97.E3.81.99.E3.82.8B" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E9.85.8D.E5.88.97.E3.82.92.E6.A8.AA.E6.96.AD.E3.81.97.E3.81.A6.E3.83.AB.E3.83.BC.E3.83.97.E3.81.99.E3.82.8B">オブジェクトの配列を横断してループする</h3> - -<p>それぞれのオブジェクトから興味のあるフィールドだけを取り出しながら、オブジェクトの配列を横断してループすることもできます。</p> - -<pre class="brush:js">var people = [ - { - name: "Mike Smith", - family: { - mother: "Jane Smith", - father: "Harry Smith", - sister: "Samantha Smith" - }, - age: 35 - }, { - name: "Tom Jones", - family: { - mother: "Norah Jones", - father: "Richard Jones", - brother: "Howard Jones" - }, - age: 25 - } -]; - -for each (let {name: n, family: { father: f } } in people) { - document.write ( "Name: " + n + ", Father: " + f + "<br>\n" ); -}</pre> - -<p>これは、<var>name</var> フィールドを <var>n</var> に、<var>family.father</var> フィールドを <var>f</var> に抜き出し、それを出力しています。これは <var>people</var> 配列のそれぞれのオブジェクトに対し行われます。出力はこのようになります:</p> - -<pre>Name: Mike Smith, Father: Harry Smith -Name: Tom Jones, Father: Richard Jones</pre> - -<h3 id=".E4.B8.80.E9.83.A8.E3.81.AE.E8.BF.94.E3.82.8A.E5.80.A4.E3.82.92.E7.84.A1.E8.A6.96.E3.81.99.E3.82.8B" name=".E4.B8.80.E9.83.A8.E3.81.AE.E8.BF.94.E3.82.8A.E5.80.A4.E3.82.92.E7.84.A1.E8.A6.96.E3.81.99.E3.82.8B">一部の返り値を無視する</h3> - -<p>あなたはまた、興味のない返り値を無視することもできます:</p> - -<pre class="brush:js">function f() { - return [1, 2, 3]; -} - -var [a, , b] = f(); -document.write ( "A is " + a + " B is " + b + "<br>\n" );</pre> - -<p>このコードを実行後、<var>a</var> は 1 になり、<var>b</var> は 3になります。値 2 は無視されます。あなたはこの方法で任意の(あるいは全ての)返り値を無視することができます。例えば:</p> - -<pre><code>[,,,] = f();</code></pre> - -<h3 id=".E6.AD.A3.E8.A6.8F.E8.A1.A8.E7.8F.BE.E3.81.AE.E3.83.9E.E3.83.83.E3.83.81.E3.81.8B.E3.82.89.E5.80.A4.E3.82.92.E5.8F.96.E3.82.8A.E5.87.BA.E3.81.99" name=".E6.AD.A3.E8.A6.8F.E8.A1.A8.E7.8F.BE.E3.81.AE.E3.83.9E.E3.83.83.E3.83.81.E3.81.8B.E3.82.89.E5.80.A4.E3.82.92.E5.8F.96.E3.82.8A.E5.87.BA.E3.81.99">正規表現のマッチから値を取り出す</h3> - -<p>正規表現の <code><a href="/ja/JavaScript/Reference/Global_Objects/RegExp/exec" title="ja/JavaScript/Reference/Global_Objects/RegExp/exec"> exec()</a></code> メソッドがマッチを見つけると、正規表現の全体にマッチした部分文字列を 1 つ目の要素に格納し、続いて正規表現内で括弧に囲まれたグループにマッチした部分文字列を順に格納した配列を返します。分割代入を使うと、全体のマッチを使う必要が無ければそれを無視して、配列の一部分のみを取り出すことが簡単にできるようになります。</p> - -<pre class="brush:js">// http / https / ftp 形式の URL にマッチする単純な正規表現 -var parsedURL = /^(\w+)\:\/\/([^\/]+)\/(.*)$/.exec(url); -if (!parsedURL) return null; - -var [, protocol, fullhost, fullpath] = parsedURL;</pre> diff --git a/files/ja/web/javascript/new_in_javascript/1.8.1/index.html b/files/ja/web/javascript/new_in_javascript/1.8.1/index.html deleted file mode 100644 index d42b06d30e..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.8.1/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: JavaScript 1.8.1 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.8.1 -tags: - - Firefox 3.5 - - Gecko 1.9.1 - - JavaScript - - JavaScript 1.8.1 -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.1 ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>JavaScript 1.8.1 は JavaScript の構文的な部分に関してはほんのわずかな更新しかありません。しかし、このリリースでの主な変更は、パフォーマンスを改善する <a class="internal" href="/Ja/SpiderMonkey/Internals/Tracing_JIT" title="Ja/SpiderMonkey/Internals/Tracing JIT">Tracemonkey just-in-time コンパイラ</a> の追加です。</p> - -<p>branch callback を削除して operation callback に置き換えるという注目すべき API の変更があります。<a class="external" href="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/a4d1fe147761aacb#" title="http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/a4d1fe147761aacb#">詳細はこのニュースグループの投稿を参照してください</a>。</p> - -<h2 id="言語に関する追加">言語に関する追加</h2> - -<dl> - <dt><a class="internal" href="/Ja/Core_JavaScript_1.5_Reference/Global_Objects/Object/GetPrototypeOf" rel="internal" title="Ja/Core JavaScript 1.5 Reference/Global Objects/Object/GetPrototypeOf"><code>Object.getPrototypeOf()</code></a></dt> - <dd>この新しいメソッドは指定されたオブジェクトのプロトタイプを返します。</dd> - <dt><a class="internal" href="/Ja/Using_native_JSON" title="Ja/Using native JSON">Using native JSON</a></dt> - <dd>Firefox 3.5 は <a class="internal" href="/ja/JSON" title="ja/JSON">JSON</a> をネイティブでサポートします。.</dd> - <dt>String オブジェクトの新しい trim メソッド</dt> - <dd><a class="internal" href="/ja/Core_JavaScript_1.5_Reference/Global_Objects/String" rel="internal" title="ja/Core JavaScript 1.5 Reference/Global Objects/String"><code>String</code></a> オブジェクトが <a class="internal" href="/Ja/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim" rel="internal" title="Ja/Core JavaScript 1.5 Reference/Global Objects/String/Trim"><code>trim()</code></a>、 <a class="internal" href="/Ja/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimLeft" rel="internal" title="Ja/Core JavaScript 1.5 Reference/Global Objects/String/TrimLeft"><code>trimLeft()</code></a>、そして <a class="internal" href="/Ja/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimRight" rel="internal" title="Ja/Core JavaScript 1.5 Reference/Global Objects/String/TrimRight"><code>trimRight()</code></a> メソッドが定義されました。</dd> -</dl> - -<h2 id="他の改善">他の改善</h2> - -<ul> - <li>オブジェクトおよび配列の初期化子によるプロパティの暗黙的な設定では JavaScript におけるセッターの定義を行わないようになりました。これはプロパティの値を設定するという振る舞いをより予測可能なものにします。詳細は <a class="new" href="../../../../web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated" rel="internal">オブジェクトおよび配列の初期化子は評価時にセッターの定義を行うべきではない</a> というブログ投稿を参照してください。</li> -</ul> - -<p> </p> diff --git a/files/ja/web/javascript/new_in_javascript/1.8.5/index.html b/files/ja/web/javascript/new_in_javascript/1.8.5/index.html deleted file mode 100644 index 5cc0deb9dc..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.8.5/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: JavaScript 1.8.5 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.8.5 -tags: - - ECMAScript5 - - Firefox 4 - - JavaScript - - JavaScript 1.8.5 - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.5 ---- -<div> -<div>{{jsSidebar("New_in_JS")}}</div> -</div> - -<p>JavaScript 1.8.5 は、Firefox4 に含まれる JavaScript のバージョンです。</p> - -<h2 id="New_functions" name="New_functions">新たな機能</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">機能</th> - <th scope="col">特徴</th> - </tr> - </thead> - <tbody> - <tr> - <td><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/create" title="JavaScript/Reference/Global Objects/Object/Create">Object.create</a></code></td> - <td>指定されたプロトタイプオブジェクトおよびプロパティに基づくオブジェクトを生成します。{{bug("492840")}}</td> - </tr> - <tr> - <td><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/defineProperty" title="JavaScript/Reference/Global Objects/Object/DefineProperty">Object.defineProperty</a></code></td> - <td>指定された記述に基づいた名称のプロパティを、オブジェクトに追加します。</td> - </tr> - <tr> - <td><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/defineProperties" title="JavaScript/Reference/Global Objects/Object/DefineProperties">Object.defineProperties</a></code></td> - <td>指定された記述に基づく複数のプロパティを、オブジェクトに追加します。</td> - </tr> - <tr> - <td><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor" title="JavaScript/Reference/Global Objects/Object/GetOwnPropertyDescriptor">Object.getOwnPropertyDescriptor</a></code></td> - <td>オブジェクトの指定された名前のプロパティの詳細を返します。{{bug("505587")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/keys" title="JavaScript/Reference/Global Objects/Object/keys"><code>Object.keys</code></a></td> - <td>オブジェクトのすべての列挙可能 (enumerable )なプロパティを配列の形式で返します。 {{bug("307791")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames" title="JavaScript/Reference/Global Objects/Object/getOwnPropertyNames"><code>Object.getOwnPropertyNames </code></a></td> - <td>オブジェクトのすべてのプロパティを列挙可能の如何に関わらず (enumerable and non-enumerable)配列として返します。 {{bug("518663")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/preventExtensions" title="JavaScript/Reference/Global Objects/Object/preventExtensions"><code>Object.preventExtensions</code></a></td> - <td>オブジェクトのいかなる拡張 (extensions)も禁止します。{{bug("492849")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/isExtensible" title="JavaScript/Reference/Global Objects/Object/isExtensible"><code>Object.isExtensible</code></a></td> - <td> - <p>オブジェクトが拡張可能かどうかを判断します。{{bug("492849")}}</p> - </td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/seal" title="JavaScript/Reference/Global Objects/Object/seal"><code>Object.seal</code></a></td> - <td>オブジェクトのプロパティが他のコードにより削除されるのを禁止(封印 (seal))します。{{bug("492845")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/isSealed" title="JavaScript/Reference/Global Objects/Object/isSealed"><code>Object.isSealed</code></a></td> - <td>オブジェクトが封印されている (sealed)かどうかを判断します。{{bug("492845")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/freeze" title="JavaScript/Reference/Global Objects/Object/freezed"><code>Object.freeze</code></a></td> - <td>オブジェクトを凍結 (Freeze)します。これにより、いかなるコードも凍結されたオブジェクトのプロパティの削除または変更ができなくなります。{{bug("492844")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/isFrozen" title="JavaScript/Reference/Global Objects/Object/isFrozen"><code>Object.isFrozen</code></a></td> - <td>オブジェクトが凍結されているかどうかを判断します。{{bug("492844")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/isArray" title="JavaScript/Reference/Global Objects/Array/isArray"><code>Array.isArray </code></a></td> - <td>与えられた変数が配列であるかどうかを調べます。{{bug("510537")}}</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Date/toJSON" title="JavaScript/Reference/Global Objects/Date/toJSON"><code>Date.toJSON</code></a></td> - <td>Dateオブジェクトを、JSON形式の文字列として返します。</td> - </tr> - <tr> - <td><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/bind" title="JavaScript/Reference/Global_Objects/Function/bind"><code>Function.prototype.bind</code></a></td> - <td>このメソッドが呼び出された際に与えられたコンテクスト(および引数)で、このメソッドを呼び出した関数自体を呼び出す、新しい関数を作成します。{{bug("429507")}}</td> - </tr> - </tbody> -</table> - -<h2 id="New_ECMAScript5_features" name="New_ECMAScript5_features">ECMAScript5 における新たな特徴</h2> - -<ul> - <li><code><a href="/ja/docs/JavaScript/Reference/Operators/Special/get" title="JavaScript/Reference/Operators/Special Operators/get Operator">get</a></code> および <code><a href="/ja/docs/JavaScript/Reference/Operators/Special/set" title="JavaScript/Reference/Operators/Special Operators/set Operator">set</a></code> 演算子は現在、数値型または文字列型の識別子を設定することができます。 {{bug("520696")}}</li> - <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/apply" title="JavaScript/Reference/Global Objects/Function/apply"><code>Function.apply()</code></a> が引数として、配列の代わりに、配列に似たオブジェクトを設定できるようになりました。</li> - <li><a href="/ja/docs/JavaScript/Strict_mode" title="JavaScript/Strict mode">strict モードのサポート</a></li> - <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/toString" title="JavaScript/Reference/Global Objects/Array/toString"><code>Array.toString()</code></a> を配列以外のオブジェクトで呼び出した場合、 <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/join" title="JavaScript/Reference/Global Objects/Array/join"><code>join()</code></a> メソッドが有効な場合は <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/join" title="JavaScript/Reference/Global Objects/Array/join"><code>join()</code></a> メソッドを呼び出した結果を返し、そうでない場合はオブジェクトの <a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/toString" title="JavaScript/Reference/Global Objects/Object/toString"><code>toString()</code></a> メソッドを呼び出した結果を返すように変更されました。</li> -</ul> - -<h2 id="Other_standardization_work" name="Other_standardization_work">その他の標準化作業</h2> - -<p>ゲッターおよびセッターを定義する、複数の非標準な構文削除されました。ECMAScript 5で定義された構文は変更されていません。非常に難解かつ使用されているケースは稀な構文です。万が一、影響を被る場合、詳細はこの<a class="external" href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/" title="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">ブログポスト</a>を参照してください。</p> - -<h2 id="New_objects" name="New_objects">新たなオブジェクト</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">オブジェクト</th> - <th scope="col">詳細</th> - </tr> - </thead> - <tbody> - <tr> - <td><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Proxy" title="https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Proxy">Proxy</a></code></td> - <td>JavaScript でのメタプログラミングを可能する、<code>Object</code> および <code>Function</code> のプロキシの作成のサポートが提供されます。</td> - </tr> - </tbody> -</table> - -<h2 id="Changes_to_global_objects" name="Changes_to_global_objects">グローバルオブジェクトの変更</h2> - -<dl> - <dt>Date オブジェクトの ISO 8061 のサポート</dt> - <dd><a href="/ja/docs/JavaScript/Reference/Global_Objects/Date" title="https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Date"><code>Date</code></a> オブジェクトの <a href="/ja/docs/JavaScript/Reference/Global_Objects/Date/parse" title="https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Date/parse"><code>parse()</code></a> メソッドは、シンプルなISO 8601形式の日付文字列をサポートします。</dd> - <dt>グローバルオブジェクトが読み取り専用となる</dt> - <dd><a href="/ja/docs/JavaScript/Reference/Global_Objects/NaN" title="JavaScript/Reference/Global Objects/NaN"><code>NaN</code></a> 、<a href="/ja/docs/JavaScript/Reference/Global_Objects/Infinity" title="JavaScript/Reference/Global Objects/Infinity"><code>Infinity</code></a> 、および <a href="/ja/docs/JavaScript/Reference/Global_Objects/undefined" title="JavaScript/Reference/Global Objects/undefined"><code>undefined</code></a> グローバルオブジェクトはECMAScript 5仕様に基づき、読み取り専用となりました。</dd> -</dl> - -<h2 id="Additional_changes" name="Additional_changes">さらなる変更</h2> - -<ul> - <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/Parent" title="JavaScript/Reference/Global Objects/Object/Parent"><code>obj.__parent__</code></a> および <code>obj.__count__</code> は廃止されました。廃止理由についてのいくつかの情報は以下を参照してください: <a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/" title="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">SpiderMonkey change du jour: the special __parent__ property has been removed</a> {{bug("551529")}} & {{bug("552560")}}</li> - <li><a href="/ja/docs/Using_native_JSON" title="Using native JSON"><code>JSON.parse()</code></a> において、末尾のカンマは許容されません。</li> -</ul> - -<h2 id="JavaScript_(SpiderMonkey)_API_changes" name="JavaScript_(SpiderMonkey)_API_changes">JavaScript (SpiderMonkey) API の変更</h2> - -<div class="note"><strong>註:</strong> <a href="/ja/docs/JSLocaleCallbacks" title="JSLocaleCallbacks">JSLocaleCallbacks</a> 構造体において規定されているロケールコールバックは、渡されたメモリバッファを解放しません。このバッファは SpiderMonkey ランタイムによって管理されます。</div> - -<p><a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_NewString" title="SpiderMonkey/JSAPI Reference/JS NewString"><code>JS_NewString()</code></a> 関数は SpiderMonkey 1.8.5 で削除されました。代わりに <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="SpiderMonkey/JSAPI Reference/JS NewStringCopyN"><code>JS_NewStringCopyN()</code></a> を使用してください。</p> diff --git a/files/ja/web/javascript/new_in_javascript/1.8/index.html b/files/ja/web/javascript/new_in_javascript/1.8/index.html deleted file mode 100644 index f26879ece3..0000000000 --- a/files/ja/web/javascript/new_in_javascript/1.8/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: JavaScript 1.8 の新機能 -slug: Web/JavaScript/New_in_JavaScript/1.8 -tags: - - JavaScript - - JavaScript_version_overviews -translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8 ---- -<div> -<div>{{jsSidebar("New_in_JS")}}</div> -</div> - -<p>JavaScript 1.8 は(<a href="/ja/docs/Firefox_3_for_developers" title="Firefox_3_for_developers">Firefox 3</a> に組み込まれている) Gecko 1.9 の一部分です。これは <a href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New_in_JavaScript_1.7">JavaScript 1.7</a> よりは大きな更新ではありませんが、ECMAScript 4/JavaScript 2 の進歩に追随するための更新がいくつか含まれています。このリリースは <a href="/ja/docs/JavaScript/New_in_JavaScript/1.6" title="New_in_JavaScript_1.6">JavaScript 1.6</a> および <a href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New_in_JavaScript_1.7">JavaScript 1.7</a> で仕様化された新機能の全てを含んでいます。</p> - -<p>JavaScript 1.8 の開発状況を追うためには、{{Bug(380236)}} を参照してください。この文書の地位については {{Bug(421027)}} を参照してください。</p> - -<h2 id="JavaScript_1.8_.E3.81.AE.E4.BD.BF.E7.94.A8" name="JavaScript_1.8_.E3.81.AE.E4.BD.BF.E7.94.A8">JavaScript 1.8 の使用</h2> - -<p>JavaScript 1.8 のいくつかの新機能を HTML で使用するためには、以下のようにしてください:</p> - -<pre class="brush: js"><code><script type="application/javascript;version=1.8"> ... あなたのコード ... </script></code></pre> - -<p>もう 1 つの(推奨されない)方法として、<code><script></code> の非推奨の language 属性を使い、"JavaScript1.8" と定義することでもできます。</p> - -<p><a href="/ja/docs/Introduction_to_the_JavaScript_shell" title="Introduction_to_the_JavaScript_shell">JavaScript shell</a> や JavaScript XPCOM コンポーネント、XUL の <code><script></code> 要素を使うときは、JS の最新バージョン(Mozilla 1.9 では JS1.8)が自動的に使われます({{Bug(381031)}}, {{Bug(385159)}})。</p> - -<p>新たなキーワードである "yield" と "let" を使う必要がある機能は、バージョン 1.7 以上を指定しなければなりません。 なぜなら、既存のコードがそれらのキーワードを変数や関数の名前として使っているかもしれないからです。新しいキーワードを導入していない機能(例えばジェネレータ式)は、JavaScript のバージョンを指定することなく使うことができます。</p> - -<h2 id=".E5.BC.8F.E3.82.AF.E3.83.AD.E3.83.BC.E3.82.B8.E3.83.A3" name=".E5.BC.8F.E3.82.AF.E3.83.AD.E3.83.BC.E3.82.B8.E3.83.A3">式クロージャ</h2> - -<p>この追加機能は、典型的な <a class="external" href="http://en.wikipedia.org/wiki/Lambda_calculus#Lambda_calculus_and_programming_languages">ラムダ記法</a>(<a class="external" href="http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97#.E3.83.A9.E3.83.A0.E3.83.80.E8.A8.88.E7.AE.97.E3.81.A8.E3.83.97.E3.83.AD.E3.82.B0.E3.83.A9.E3.83.9F.E3.83.B3.E3.82.B0.E8.A8.80.E8.AA.9E">日本語版</a>)に似た表現を与える、単純な関数を書くための簡略表現に過ぎません。</p> - -<p><a href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New_in_JavaScript_1.7">JavaScript 1.7</a> 以前:</p> - -<pre>function(x) { return x * x; }</pre> - -<p>JavaScript 1.8:</p> - -<pre>function(x) x * x</pre> - -<p>この構文を使うことによって、中括弧と 'return' 文を省くことができます(それらは暗黙的に補われます)。この方式でコードを書くことには、コードを構文的に短くするメリットしかありません。</p> - -<p><strong>例:</strong></p> - -<p>イベントリスナーを渡す簡略表現:</p> - -<pre>document.addEventListener("click", function() false, true);</pre> - -<p><a href="/ja/docs/JavaScript/New_in_JavaScript/1.6" title="New_in_JavaScript_1.6">JavaScript 1.6</a> からの array のメソッドである some とともにこの記法を使うと:</p> - -<pre>elems.some(function(elem) elem.type == "text");</pre> - -<h2 id=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E5.BC.8F" name=".E3.82.B8.E3.82.A7.E3.83.8D.E3.83.AC.E3.83.BC.E3.82.BF.E5.BC.8F">ジェネレータ式</h2> - -<p>この追加により、ジェネレータ(<a href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New_in_JavaScript_1.7">JavaScript 1.7</a> で導入されたものです)を簡単に作成することが可能になります。ジェネレータを生成するには、通常は内部に yield を含むカスタム関数を作成しなければなりませんでしたが、この追加により、配列内包に似た構文を使って同じ性質のジェネレータ文を作成することができるようになります。</p> - -<p><a href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New_in_JavaScript_1.7">JavaScript 1.7</a> では、あるオブジェクトのためのカスタムジェネレータを作成するために、以下のようなものを書くことでしょう:</p> - -<pre class="brush:js">function add3(obj) { - for ( let i in obj ) - yield i + 3; -} - -let it = add3(someObj); - -try { - while (true) { - document.write(it.next() + "<br>\n"); - } -} catch (err if err instanceof StopIteration) { - document.write("End of record.<br>\n"); -} -</pre> - -<p>JavaScript 1.8 では、ジェネレータ式を代わりに使うことで、カスタムジェネレータ関数を作成する必要性が無くなります:</p> - -<pre class="brush:js">let it = (i + 3 for (i in someObj)); - -try { - while (true) { - document.write(it.next() + "<br>\n"); - } -} catch (err if err instanceof StopIteration) { - document.write("End of record.<br>\n"); -} -</pre> - -<p>ジェネレータ式は、関数に値として渡すこともできます。これは配列があらかじめ生成される典型的な配列内包の場合と違って、本当に必要とされるまでジェネレータが実行されないので、特に注目に値します。その違いの例を挙げます:</p> - -<p>JavaScript 1.7 の配列内包を使った場合</p> - -<pre class="brush:js">handleResults([ i for ( i in obj ) if ( i > 3 ) ]); - -function handleResults( results ) { - for ( let i in results ) - // ... -} -</pre> - -<p>JavaScript 1.8 のジェネレータ式を使った場合</p> - -<pre class="brush:js">handleResults( i for ( i in obj ) if ( i > 3 ) ); - -function handleResults( results ) { - for ( let i in results ) - // ... -} -</pre> - -<p>この 2 つの例の大きな違いは、配列内包を使った場合には配列を内包するときと繰り返し処理を行うときの 2 度 "obj" 構造に対してループが実行されるのに対して、ジェネレータ式を使った場合には 1 度しかループが実行されずに済むという点です。</p> - -<h2 id=".E3.81.95.E3.82.89.E3.81.AA.E3.82.8B_Array_.E3.81.AE.E6.8B.A1.E5.BC.B5" name=".E3.81.95.E3.82.89.E3.81.AA.E3.82.8B_Array_.E3.81.AE.E6.8B.A1.E5.BC.B5">さらなる Array の拡張</h2> - -<p>JavaScript 1.8 では、 <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array" title="JavaScript/Reference/Global_Objects/Array">Array</a></code> オブジェクトに 2 つの新しい繰り返しのメソッドが導入されました:</p> - -<ul> - <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/reduce" title="JavaScript/Reference/Objects/Array/reduce">reduce()</a></code> - 配列の全ての要素に関数を実行し、直前の呼び出しから結果を収集します。</li> - <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/reduceRight" title="JavaScript/Reference/Objects/Array/reduceRight">reduceRight()</a></code> - 配列の全ての要素に関数を実行し、直前の呼び出しから結果を収集しますが、逆から実行します。</li> -</ul> - -<h2 id="for..in.E3.80.80.E3.81.AE.E5.88.86.E9.85.8D.E6.96.B9.E6.B3.95_.E3.81.AE.E5.A4.89.E6.9B.B4" name="for..in.E3.80.80.E3.81.AE.E5.88.86.E9.85.8D.E6.96.B9.E6.B3.95_.E3.81.AE.E5.A4.89.E6.9B.B4">for..in の分配方法の変更</h2> - -<p>JavaScript 1.8 のリリースで生じた変更に、JavaScript 1.7 で導入された配列のキー/値の組への<a class="internal" href="/ja/docs/JavaScript/New_in_JavaScript/1.7" title="New in JavaScript 1.7">分割代入</a>に関連するバグ修正があります。これまでは for ( var [key, value] in array ) を使うことで、配列のキー/値の組を分割代入することができました。しかしこのせいで、配列の配列において値を分割代入することが不可能になっていました。現在この問題は解決しています。({{Bug("366941")}})</p> diff --git a/files/ja/web/javascript/new_in_javascript/index.html b/files/ja/web/javascript/new_in_javascript/index.html deleted file mode 100644 index db95fd3afe..0000000000 --- a/files/ja/web/javascript/new_in_javascript/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: JavaScript の新機能 -slug: Web/JavaScript/New_in_JavaScript -translation_of: Archive/Web/JavaScript/New_in_JavaScript ---- -<div>{{jsSidebar("New_in_JS")}}</div> - -<p>このページはJavaScriptバージョン履歴の情報とFirefoxのようなMozilla/SpiderMonkeyベースのJavaScriptアプリケーションの実装状況を表示します。</p> - -<h2 id="ECMAScript_versions">ECMAScript versions</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/Language_Resources">Language resources</a></dt> - <dd>JavaScript言語の標準になっている、ECMAScript standardsを学ぶことが出来ます。</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 support</a></dt> - <dd>Mozillaベースのエンジン(RhinoやSpidermonkeyなど)や製品におけるECMA-262 Edition 5.1の実装状況を表します。</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6 support</a></dt> - <dd>Mozillaベースのエンジン(RhinoやSpidermonkeyなど)や製品におけるECMA-262 Edition 6の実装状況を表します。</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_7_support_in_Mozilla">ECMAScript 7 support</a></dt> - <dd>Mozillaベースのエンジン(RhinoやSpidermonkeyなど)や製品におけるECMA-262 Edition 7の実装状況を表します。</dd> -</dl> - -<h2 id="JavaScript_リリースノート">JavaScript リリースノート</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/Firefox_JavaScript_changelog">Firefox JavaScript changelog</a></dt> - <dd>Firefox5とそれ以降のJavaScriptのチェンジログについてはこの項目を参照してください。</dd> - <dt> </dt> - <dt>Chrome JavaScript changelog</dt> - <dd>(TODO). See this changelog for JavaScript features implemented in Chrome releases.</dd> -</dl> - -<h2 id="JavaScript_versions">JavaScript versions</h2> - -<p><strong>Deprecated</strong> ({{deprecated_inline()}}). The explicit versioning and opt-in of language features was Mozilla-specific and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867609">is in process of being removed</a>. Firefox 4 was the last version which referred to an JavaScript version (1.8.5). With new ECMA standards, JavaScript language features are now often mentioned with their initial definition in ECMA-262 Editions such as Edition 6 (ES6).</p> - -<p>JavaScript was released as version 1.0 in March 1996 in Netscape Navigator 2.0 and Internet Explorer 2.0.</p> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.1">JavaScript 1.1</a></dt> - <dd>Version shipped in Netscape Navigator 3.0. Released on August 19, 1996.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.2">JavaScript 1.2</a></dt> - <dd>Version shipped in Netscape Navigator 4.0-4.05. Released on June 11, 1997.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.3">JavaScript 1.3</a></dt> - <dd>Version shipped in Netscape Navigator 4.06-4.7x. Released on October 19, 1998.<br> - Standardization work to be compliant with ECMA-262 1st and 2nd Edition.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.4">JavaScript 1.4</a></dt> - <dd>Version shipped in Netscape's server side JavaScript. Released in 1999.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.5">JavaScript 1.5</a></dt> - <dd>Version shipped in Netscape Navigator 6.0 and Firefox 1.0. Release on November 14, 2000.<br> - 標準化団体の ECMA-262 3rd Editionに準拠しています。</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a></dt> - <dd>Version shipped in Firefox 1.5. Released in November 2005.<br> - ECMAScript for XML (E4X)やnew <code>Array</code> methods plus <code>String</code> and <code>Array</code> generics.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7</a></dt> - <dd>Version shipped in Firefox 2. Released in October 2006.<br> - Includes generators, iterators, array comprehensions, <code>let</code> expressions, and destructuring assignment.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8">JavaScript 1.8</a></dt> - <dd>Version shipped in Firefox 3. Released in June 2008.<br> - Includes expression closures, generator expressions and <code>Array.reduce()</code></dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.1">JavaScript 1.8.1</a></dt> - <dd>Version shipped in Firefox 3.5. Released on <span class="st">June 30, 2009.<br> - Includes the TraceMonkey JIT and supports native JSON.</span></dd> - <dt>JavaScript 1.8.2</dt> - <dd>Version shipped in Firefox 3.6. Released June 22, 2009.<br> - Includes only minor changes.</dd> - <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.5">JavaScript 1.8.5</a></dt> - <dd>Version shipped in Firefox 4. Released July 27, 2010.<br> - Includes many new features for ECMA-262 Edition 5 compliance.<br> - This is the last JavaScript version.</dd> -</dl> - -<h2 id="Features_still_requiring_version_opt-in">Features still requiring version opt-in</h2> - -<dl> - <dt><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code> statement</a></dt> - <dd>The <code>let</code> statement requires the JavaScript version 1.7 (or higher) opt-in. See {{bug(932517)}} and {{bug(932513)}}.</dd> -</dl> |