js-primer
js-primer copied to clipboard
`function` キーワードと関数式のうち推奨のものがあればそれを、ない場合はその旨明記してほしい
該当ページ
など
リクエスト/提案内容
関数定義方法のうち、function
キーワードと関数式のいずれを推奨するか明記いただけないでしょうか。
または、どちらも差がない場合は、それぞれの特徴をまとめたセクションを設けて「どちらでも良い」旨明記するのはいかがでしょうか。
背景
関数と宣言 のページで、function
キーワードを使った関数宣言と関数式による定義方法をそれぞれ紹介しています。
同ページの [コラム] 同じ名前の関数宣言は上書きされるで、以下のように function
キーワードや var
を使った関数式での注意点を書いています。
この関数定義の上書きはfunctionキーワードでの関数宣言とvarキーワードを使った関数式のみで発生します。 letやconstでは同じ変数名の定義はエラーとなるため、このような関数定義の上書きもエラーとなります。
また、関数とスコープ ページの 関数宣言と巻き上げ でも、function
キーワードと var
での関数式の注意点を書いています。
functionキーワードによる関数宣言も巻き上げられます。 しかし、varによる変数宣言の巻き上げとは異なり、問題となることはほとんどありません。 なぜなら、実際に巻き上げられた関数を呼び出せるためです。
注意点として、varで宣言された変数へ関数を代入した場合はvarのルールで巻き上げられます。 そのため、varで変数へ関数を代入する関数式では、hello変数が巻き上げによりundefinedとなるため呼び出せません(「関数と宣言(関数式)」を参照)。
これら (や他の解説) を見ると、最も無難な関数定義方法は、巻き上げ、再定義、再代入を防げる const
での関数式によるものに思えます (状況によっては let
が必要なこともゼロではないかもしれません)。
function
文利用のデメリットは無視できる程度とも思いますが、初学者の混乱を避けるために推奨の手段を明記いただけないでしょうか。
初出の「関数と宣言」で推奨方法を書き、理由の理解は他の知識も必要なため別ページで後述、などだと指針が早めに定まるので初学者は安心しやすいと思います。
ご検討よろしくお願いします。
期待する結果
function
文と関数式のうち推奨する方法とその理由が明記されること。
または、どちらかを推奨するほどの差がないこととその理由が目立つ形で明記されること。
個人的にはconst
での関数式を使うことが多い(同じ変数名の定義はエラーとなるため)ですが、
そこまで差があるわけでもないという感じはしますね。結局両方使われているイメージです。(統一したいという人もいるのも見かけます)
cc @lacolaco
僕も個人的には両方使うことがあって、どちらかを強く推奨できるほどの意見は持ち合わせていないです
お二人ともありがとうございました、推奨は特にないとのこと承知しました。 優先度は高くないと思いますが、可能であれば
どちらかを推奨するほどの差がないこととその理由が目立つ形で明記されること。
こちらご対応いただけると初学者には嬉しいと思いますので、ご検討よろしくお願いします。