JavaScriptで行末のセミコロンは不要?

最近はJavaScriptで行末にセミコロン ; を省略する流れがあります。JavaScriptで行末にセミコロンを書くか質問しました。


342票の回答があり「セミコロンを付ける」が78%、「セミコロンを付けない」が12%、「気にしない」が10%でした。

次の記事「セミコロンは省略?人気スタイルガイドに学ぶJavaScriptのコーディング規則 – WPJ」では、セミコロンを省略するスタイルガイド「JavaScript Standard Style」が紹介されています。JSライブラリとして、Vue.jsD3.jsのサンプルでもセミコロンが省略されて書かれてます。

国内ではアンケートの結果のとおり、セミコロンを付けることに根強い支持があります

JSでのaddEventListener()の第三引数を使ってる?

JavaScriptのaddEventListener()メソッドには第三引数(useCapture)を指定できます。

window.addEventListener('DOMContentLoaded', init, false);

書籍やブログなどでfalseが指定されているのを見かけたことがあり、不思議に思ったことはありませんか? 実際にはどのくらい使われているのか質問しました。


163票の回答があり「いつも指定する (明示的にfalseを指定する)」が20%、「普段は指定しない (必要なときだけ指定する)」が43%、「気にしたことがない」が37%でした。

addEventListenerの第三引数でfalseを明示的に指定されているのは、昔のブラウザの仕様(Firefox 6以前は必須)だったからでしょう。今のブラウザは必須ではないので、明示的に指定する必要がありません。また、addEventListenerの第三引数に真偽値ではなくオブジェクト型で指定することもできます(参照「EventTarget.addEventListener – Web API インターフェイス | MDN」)。

パッケージマネージャーはnpmが多数

フロントエンドの開発ではパッケージマネージャーを利用して、環境構築するのが一般的です。パッケージマネージャーには様々な種類があるので、どれがよく使われているか質問しました。


221票の回答があり「bower」が9%、「yarn」が19%、「npm」が72%でした。

yarnの登場時は高速であることやロックファイルが使えることがnpm 4に対する利点として話題となりましたが、npm 5から同等の機能が入ったため、yarnの必要性が下がりました。ただ、yarnのほうがnpmより今も高速であったりdependencyのツリーがフラットだったりするので、敢えて利用している人もいるようです(参照「行く2017年、来る2018年 – 開発環境の変化からCSSまで | CodeGrid」)。

Babelのプリセットは?

Babelとは最新のECMAScriptの仕様で書いたJavaScriptを、互換性のある下位バージョンに変換する(トライスパイルする)ツールです。例えば、ECMAScript 2015の仕様の一つであるclassはIE11では利用できません。Babelを使えばclassとして書いたコードは互換のあるprototypeを使った構文に変換されます。

Babelの変換のルールとしてpresetが用意されていますが、どの種類がメジャーであるか質問しました。


39票の回答があり「babel-preset-2015」が67%、「babel-preset-2017」が8%、「babel-preset-latest」が10%、「babel-preset-env」が15%でした。

公式では多機能な「babel-preset-env」が推奨されているものの、数年前にメジャーだった「babel-preset-2015」が今も多く使われているようです。

「babel-preset-2015」だとasync/awaitのようなECMAScript 2017の便利な機能が使えないことや、動作環境を無視してECMAScript 5まで変換されてしまうのでToo Fatな印象があります(例えばIE11対象外の環境であればECMAScript 5まで落とす必要はなく、ECMAScript 2015ぐらいの変換であれば十分である)。

次のページではGitやAdobeのツールについてのアンケートを紹介します。