2015年03月23日

GoogleがJavaScriptにストロングモードを用意?

JavaScriptには既にstrict mode(厳格な書き方をしないとエラーになるモード。Perlでuse strictみたいなの)がいますが、それに加えてStrong Modeというのを用意しようと提案されているそうです。

おさらいとして、strict modeについて。

大きなところでは、グローバル汚染に対してエラーが出るようになっています。

"use strict"; // これでstrict modeを宣言

i = 0;     //これはエラーになる
var i = 0; // こう書かないといけない

Objectに同じ名前の要素を書いちゃった場合にもエラーになります。(筆者環境では、これを書いている時点ではブラウザが対応してないせいかエラーにならなかった)

"use strict";
var obj = { p: 1, p: 2 };
console.log( obj );

その他、消せないプロパティを消そうとしたらエラーになるとか、evalで変数を宣言できなくなるとか、いくつかの厳格じゃない書き方を正してくれるようになっています。

JavaScriptのいい加減さは拡張性やカスタマイズ性という意味では良い部分もありますが、開発規模が少しでも大きくなると泣きをみることもしばしば。

そんなstrict modeに加えてもっと厳格なモードが必要ではないかというのが、本日のお話。

Google's JavaScript Team Proposes "Strong Mode"
(GoogleのJavaScriptチームがStrong Modeを提案)

Is Strict mode enough for JavaScript? The Chrome V8 team is proposing an extension to Strict mode to be called Strong mode

JavaScriptはstrict modeで十分か? Chrome V8チームがstrong modeと呼ばれるstrict modeの拡張を提案しました。

Googleのサイトに提案が載ってます。

Experiments with Strengthening JavaScript

Strong mode is purely a subset of JavaScript. It does not add any new features but focuses on removing some.

strong modeはJavaScriptのサブセット。新しいfeatureではないよ。ただ一部の機能を除去してるよ。

ということだそうです。

主な禁止されている事項は、Objectのpropartyを消せなくなるとか(deleteはsyntax error!)、evalが使えなくなるとか(evalはsyntax error!)、関数を呼ぶ時に引数の数は合ってないといけないとか(今は数が違ってても普通に動いてしまう)、関数の宣言がimutable(不変)になるとか、安全にする為のいろいろな施策が打たれているようです。

既に実装がされていて、日本でも試している方がいるようです。

ES6時代のGoogle的Good Parts: V8のstrong modeを試す

中規模の開発まではstrict modeでも事足りるかもしれませんが、nodeで大規模な開発を始めた場合などはこのモードが存在感を持ちそうです。

私はできればJavaScriptでサーバ側の開発はしたくないなぁと考えている派なので、あまり関わることはなさそうですが。むしろクライアント側もScala.jsで。。。

posted by newsit at 07:00| linux