アカウント名:
パスワード:
邪悪な仕様を列挙すると・var の巻き上げ・ブロックスコープがない・モジュールがない・class 構文がない (class のようなものは作れるのに!)・ただの function なのに this にアクセス出来る (コールバックに登録した時は便利だけど、直で呼び出した時は this は何?とか)他も細かいのは色々…
ただ、そんな JavaScript を俺は好きだ。
ES6では巻き上げ無しのブロックスコープ宣言letが入ったし、モジュールも、class構文も、thisバインド関数もあるじゃん。
もちろん、ES6 でかなりの部分が解決されたけど、まだ当たり前のように使えるようになるには数年掛かると思うよ。
現状でも TypeScript を使えばかなりの部分が解決されるから、基本 TypeScript でやっちゃってるけどね。(短いものは直接 JavaScript だけど)
Traceurの未実装な点について末尾最適化、正規表現のyフラグは重箱の隅型付配列やプロトタイプセットなんかはDOMやブラウザの独自仕様として既に実装されているものを使うnormalizeやMath系は分離されてて、別のライブラリで補う
実質無いのはSymbolとProxy-Reflectの2点まあProxyはどうにもならない。素で使えるようになるのも最も後になろう機能Symbolはまあfor-ofのための@@iteratorが重要で、for-ofでは見せかけの対応がなされてるのでどっぷり使おうとしなければ問題ないと言えるでもこれも変換に頼れるような機能ではあまりない
10月になればChrome/Firefoxの安定版でSymbol/for-ofの対応とMath関数実装が整うし、ここ一ヶ月でようやく安定したモジュール周りの仕様もより良くコンパイラに取り込まれるだろうから、そういうモダンブラウザ向けのコンテンツであればコンパイルフラグをparseに切り替えて使うことでより良い体験ができるようになると思うそこが1つの節目
次の節目は今年末にES6がラストコールされた後、IE12がリリースされたときまあhttp://status.modern.ie/を見る限りProxy以外はその時点で(コンパイラ噛ますことで)普通に使える状況になりそう
ただ今でも構文ベースの機能であれば十分に使えるし、#2672522で挙げられてるような問題は全部構文ベースで解決されるものだからES6仕様にコンパイラが100%対応してなかろうと、現時点でも問題ない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
JavaScript の言語仕様の邪悪さは + 演算子だけではない… (スコア:3)
邪悪な仕様を列挙すると
・var の巻き上げ
・ブロックスコープがない
・モジュールがない
・class 構文がない (class のようなものは作れるのに!)
・ただの function なのに this にアクセス出来る (コールバックに登録した時は便利だけど、直で呼び出した時は this は何?とか)
他も細かいのは色々…
ただ、そんな JavaScript を俺は好きだ。
Re: (スコア:0)
ES6では巻き上げ無しのブロックスコープ宣言letが入ったし、
モジュールも、class構文も、thisバインド関数もあるじゃん。
Re: (スコア:2)
もちろん、ES6 でかなりの部分が解決されたけど、まだ当たり前のように使えるようになるには
数年掛かると思うよ。
現状でも TypeScript を使えばかなりの部分が解決されるから、基本 TypeScript でやっちゃってるけどね。
(短いものは直接 JavaScript だけど)
Re:JavaScript の言語仕様の邪悪さは + 演算子だけではない… (スコア:0)
Traceurの未実装な点について
末尾最適化、正規表現のyフラグは重箱の隅
型付配列やプロトタイプセットなんかはDOMやブラウザの独自仕様として既に実装されているものを使う
normalizeやMath系は分離されてて、別のライブラリで補う
実質無いのはSymbolとProxy-Reflectの2点
まあProxyはどうにもならない。素で使えるようになるのも最も後になろう機能
Symbolはまあfor-ofのための@@iteratorが重要で、for-ofでは見せかけの対応がなされてるのでどっぷり使おうとしなければ問題ないと言える
でもこれも変換に頼れるような機能ではあまりない
10月になればChrome/Firefoxの安定版でSymbol/for-ofの対応とMath関数実装が整うし、
ここ一ヶ月でようやく安定したモジュール周りの仕様もより良くコンパイラに取り込まれるだろうから、
そういうモダンブラウザ向けのコンテンツであればコンパイルフラグをparseに切り替えて使うことでより良い体験ができるようになると思う
そこが1つの節目
次の節目は今年末にES6がラストコールされた後、IE12がリリースされたとき
まあhttp://status.modern.ie/を見る限りProxy以外はその時点で(コンパイラ噛ますことで)普通に使える状況になりそう
ただ今でも構文ベースの機能であれば十分に使えるし、#2672522で挙げられてるような問題は全部構文ベースで解決されるもの
だからES6仕様にコンパイラが100%対応してなかろうと、現時点でも問題ない