Firefox 2 の新機能の一つに JavaScript 1.7 への対応がある。Firefox 2 Beta 2 のリリースも近づき JavaScript 1.7 の新機能もほとんどが実装されてきたのでここにまとめてみる。といっても New in JavaScript 1.7 に大体はまとまっているので補足的な部分など。
なお、ブラウザ上でスクリプトを実行する場合は、JavaScript のバージョンを明記しないと let 、yield がキーワードとして認識されない (Bug 351515) 。
<script type="text/javascript; version=1.7">
JavaScript shell を使う場合は起動時にバージョンを指定するか version 関数を使う。
$ js -v 170
js> version(170);
これまでは for 、return といった予約語を識別子 (変数名、プロパティ名など) として直接使うことはできなかったが、JavaScript 1.7 からは確実にプロパティ名だと判断できる文脈に限って予約語を直接識別子として扱うことができるようになった (Bug 336376) 。具体的な文脈は以下のとおりである。
.
の直後 (ただし後に名前空間修飾演算子 ::
が続く場合を除く)..
の直後 (ただし後に名前空間修飾演算子 ::
が続く場合を除く)@
の直後 (ただし後に名前空間修飾演算子 ::
が続く場合を除く) (Bug 345922)::
の直後// JavaScript 1.6 以前
var o = { "for": 42, "delete": function () { ... } };
var t = o["for"];
o["delete"]();
// JavaScript 1.7
var o = { for: 42, delete: function () { ... } };
var t = o.for;
o.delete();
これまで JavaScript には大まかにいえば大域スコープと関数内スコープしか存在しなかったが、ブロックスコープを実現すべく let 文、let 式、let 宣言が導入された (Bug 336378) 。let 文と let 式を区別するために let 文はブロック、let 式は式しか直後に取れない。また、let 宣言は var 宣言と同じく実行に先立って処理される。なお、
コメントをする