スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaScriptの(主にMozillaによる)独自拡張のまとめ

MozillaはJavaScriptに様々な拡張を施してる。 JavaScript - MDCから辿って得られる情報から、Mozillaの(独自)拡張をまとめてみた。

JavaScript 1.5 / Netscape由来

定数
const a=123;
alert(a); // 123

MozillaだけでなくSafari、Chrome、Operaなどでも使える。

条件付きcatch節
try {
  throw 123;
} catch (ex if ex == 123) {
  alert(ex); // 123
}

instanceofと組み合わせて使うことが多い。

JavaScript 1.6

for each...in
for each (var x in {a:1,b:2,c:3}) {
  alert(x); // 1 → 2 → 3
}

JavaScript 1.7

Generators and iterators
function gen() {
  for (var i = 0; i < 3; ++i) {
    yield i;
  }
}
var g = gen();
alert(g.next()); // 0
alert(g.next()); // 1
alert(g.next()); // 2
alert(g.next()); // StopIterationが飛ぶ
Array comprehensions
[i+i for (i in {a:1,b:2,c:3}) if (i == "a")] // ["aa"]
Block scope with let
// let式
var z=5;
alert(let(x=1,y=2,z=z+2) x+y*z); // 15
// let文
let(x=1,y=2,z=z+2) {
  alert(x+y*z); // 15
}
// let宣言
let x=1,y=2,z=z+2;
alert(x+y*z); // NaN (実は上の行のz+2では新たに宣言されたzが参照される)
Destructuring assignment
var [a,,c] = [1,2,3];
alert(a+c); // 4
識別子の扱い
JavaScript 1.7 の新機能: Days on the Moonより。
var o = {do: function () { alert("Hello"); }};
o.do();

JavaScript 1.8

Expression closures
var f = function(x) Math.sqrt(x);
alert(f(81)); // 9

ただのシンタックスシュガー。

Generator expressions
var gen = (i+i for (i in {a:1,b:2,c:3}) if (i == "a"));
alert(gen.next()); // aa
alert(gen.next()); // StopIterationが飛ぶ

おまけ: ECMAScript 5

オブジェクトリテラル中でのget/set
var o = {get hoge() { return "hoge"; }};
alert(o.hoge); // hoge

2010/03/28:誤記修正

スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。