最近のJavaScript状況メモ
すっかり最近の動向に疎くなってたので、いまさらながらメモ。
IEやOperaの追従状況が気になるところ。
JavaScript 1.7
リストの分割代入が出来るようになってる。
[a, b] = f() というコマンドは、関数の返り値を角カッコ中の変数に順番に代入します。
http://developer.mozilla.org/ja/docs/New_in_JavaScript_1.7
Operaでの対応状況はこちら。たしかにvarをつけると動かないのは痛い。
Operaで分割代入
http://orera.g.hatena.ne.jp/misttrap/20070303/p1
JavaScript 1.8
もういちいちreturnを書かなくてもいい。
function(x) x * x
http://developer.mozilla.org/ja/docs/New_in_JavaScript_1.8
この構文を使うことによって、中括弧と 'return' 文を省くことができます(それらは暗黙的に補われます)。
ブラウザとバージョンの対応
JavaScript と Navigator のバージョン
http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide:About
New in JavaScript 1.xのリンクもここにあり(1.5?1.8)
JavaScript | ブラウザ |
1.0 | Navigator 2.0 |
1.1 | Navigator 3.0 |
1.2 | Navigator 4.0 |
1.3 | Navigator 4.06 |
1.4 | |
1.5 | Firefox 1.0 |
1.6 | Firefox 1.5 |
1.7 | Firefox 2.0 |
1.8 | Firefox 3.0 |
JavaScript 2.0
うーん、Javaみたいなクラスベースのかっちりした言語になっちゃうんだろうか…。
JavaScript 2.0 は JavaScript の進化における次期の主要なステップである。JavaScript 1.5 で既にあったものの他に JavaScript 2.0 は以下の機能を取り入れている:
http://www.mozilla-japan.org/js/language/js20/introduction/index.html
* 静的及び動的なクラス定義構文
* 名前空間とバージョン管理機構を含むパッケージ
* プラグラムやインターフェイス記述のための型
* const や final のような不変値の宣言
* private 、internal 、public 、及びユーザ定義のアクセス制御
* 他のプログラミング言語とのより正確なコミュニケーションを行うための int などのマシン型
ECMAScript4は厳密にも書けるが、型なしのいい加減コーディングの手段も残されているようだ。
それならいいかも(←すでにいい加減コーディングしか考えてないやつ)
ECMAScript 4 の Draft をざっくり読んでみた - てっく煮ブログ
http://d.hatena.ne.jp/nitoyon/20071030/es4_overview
型を厳密に宣言すれば、実行時じゃなく実行前型チェックができるので処理が高速になる。他にも、int, uint, double といった値は高速演算できる、Vector(後述)を使えば Array のオーバーヘッドを削減できる、といったメリットも。
もちろん、型なしのいい加減コーディングもできる。ライブラリでは厳密にコーディングして高速化を図り、ちょっとしたコードはいい加減に書いてコーディング時間の削減を狙う、といった使い分けもできるようだ。
厳密モードがseald classで、いい加減モードがdynamic class?
ActionScript for JavaScript(er).
http://amachang.art-code.org/usrb.in/amachang/static/shibuyaes/
dynamic class じゃないと
* オブジェクトをハッシュとして扱うことができない
* プロパティの追加ができない
* strict の場合は prototype にもアクセスできない
* dynamic class の反対は sealed class
ECMAScriptのeditionと各言語実装の関係はだいたいこんな感じ?
ECMAScript 3 | JavaScript 1.x | ActionScript 1,2 | JScript |
---|---|---|---|
ECMAScript 4 | JavaScript 2.x | ActionScript 3 | JScript.NET |