大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

JavaScript習得への道は遠い。

著者:高木信尚
公開日:2018/05/26
最終更新日:2018/05/26
カテゴリー:技術情報

高木です。おはようございます。

昨日も書いたように、重い腰を上げてJavaScriptの勉強を本格的に始めました。
実際に勉強を始めてみると、想像していたよりはるかに難しいことがわかります。
おそらく、安心して使いこなせるようになるまで、少なく見積もっても1年はかかりそうです。

何が難しいかというと、標準規格のバージョンが毎年のように上がる上、方言も多く、しかも方言の多くに同時に対応しないといけないことです。
私が普段よく使っているC++の場合、標準規格のバージョンは実質4つであり、相手にするコンパイラも実質4つ(GCC、Clang、Visual C++、EDG)です。
JavaScriptはそれと比べてもはるかに多くの方言があります。

JavaScriptの勉強を進めていくにつれ、昨日書いたように疑問点は次々解消していってはいます。
ローカル変数のスコープあるいは生存期間にしても、varではなくletやconstを使えばブロックスコープが実現できることも学びました。
現在主流のブラウザやnode.jsの対応状況をみても、ECMAScript 2015(ES6)以上を想定することに大きな問題はなさそうです。
http://kangax.github.io/compat-table/es6/

昨日あたりから『Effective JavaScript』を読み始めたのですが、そこで知ったことに”use strict”があります。
いかにも場当たり的な機能ですが、互換性を考えると致し方ないのでしょう。
少なくとも”use strict”を徹底することで方言の問題は多少軽減できそうです。

ただ、”use strict”に関しては、非常に汚い(「おぞましい」といってもいいような)バッドノウハウがあるようですね。
スクリプトを連結しても確実に”use strict”を有効にするためにファイル全体を即時関数で囲むとか、私の想像を超える汚さでした。

『Effective JavaScript』は2013年の書籍であり、当時のECMAScriptの最新版はES5でした。
ですので、もしかしたら新しいバージョンでは”use script”をブロックの先頭で書いても有効になるかも? と淡い期待を抱きました。
実際に実験してみましたが、そんなはずもなく、やはり即時関数でどうにかする以外になさそうです。

ECMAScript 2015で導入されたアロー関数の先頭でも”use strict”を書くことはできるようです。
それなら先ほどのバッドノウハウも次のように書けます。

こう書けたから何かうれしいのかといわれれば、決してそんなことはありません。
むしろ汚さが増したと感じるのは私だけでしょうか?

    上に戻る