イマドキのJavaScriptの書き方2018 - Qiita
とりあえず黙ってこれ読んでください。
これからの時代のJSを書く上で大事な多くの事が詰まっています。
質問文の8割も解決するでしょう。
そして本回答では、残りの2割を埋める為にチューニングしていきます。
const - MDN
const 宣言は、値への読み取り専用の参照を作ります。定数が保持している値が不変ということではありません。 — その変数の識別子が再代入できないというだけです。たとえば、定数が中身がオブジェクトである場合、オブジェクトの内容 (例えばそのプロパティ) 自体は変更可能です。
という訳です。
関数を"定数(const)"で定義するとは「関数内の構造を変更しませんよ」ということを表しているのでしょうか?
その理解で構いません。
しかしJSの仕様から読み解いた場合、若干行き過ぎた解釈です。
(この辺は下のコーディング規約欄で解説します)
他の言語の定数(const)はそれなりに重い意味を持ちますが、
JSではconstは単にvarが糞だけど、
後方互換の為にvar宣言を消せないから構文を追加しただけです。
定数なんて御大層なものではなく、
可読性の為に好き勝手な代入を禁止した変数と理解してください。
従ってconst
による関数宣言は
単なる再代入禁止の変数に関数を代入しただけです。
それ以上でも以下でもありません。
ここからはコーディング規約というプロジェクト内のローカルルールの話に入ります。
プロジェクトの中で書き方がコロコロ変わると読み手の負担になるので、
職場やチーム内でガイドラインを作ってそれに則った統一された美しいコードを書きましょうという文化があります。
それをコーディング規約と呼んだりします。
let
は後で再代入しますよという宣言に他ならず、
言ってる事がコロコロ変わる無能な上司・先輩みたいなものですから、
コードの読み手、開発者への負担になります。
なのでlet
は避けてconst
でやろうねってのがトレンドです。
関数の宣言方法に関して
JSではfunction
という関数宣言がちゃんと用意されていますが、
(プロトタイプベースなのでしゃあなしですが)this
を汚すみたいな弊害もあり、
「なんだそりゃ?」みたいな挙動が数多くあり、不具合を出す原因となっていました。
そこでES2015以降のバージョンではアロー関数が追加されて、
関数宣言の事実上の代替となりました。
モダンなプロジェクトでは何も考えず
このスタイルで関数宣言しとけみたいな感じになっています。
js
1const add = (num1, num2) => num1 + num2;
この辺のコーディング規約を含めれば、
質問文のような理解に落ち着いてくるのだろうなという感じです。
あくまでそれはルール決めありきの話なので、
チーム内で会話出来るケースならば、実際にそう書いている人に意図を聞いた方が良いですね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。