(無名関数だと、
質問に挙げていただいた二つの定義方法は、JavaScriptにおいては、無名関数にはなりませんので、その時点で間違いな認識になります。
質問のコードに対して、console.log(Component.name);
を実行してみればわかります。
両方とも、Component
が出力されたかと思います。
無名関数になる状況は、
クロージャを使った時となります。
クロージャに関しては、
クロージャ - JavaScript | MDN
をご参照ください。
さて、豆知識はここまでにしておいて、下記が本題になります。
constで定義しているなら同名による関数の上書きができない、みたいな違いがあると思いましたが、、、)
その違いももちろんありますが、
一番影響をうけるのは、定義の順番です。
javascript
1const instanse = new Component();
2
3function Component () {}
上記はエラーは起きませんが、
javascript
1const instanse = new Component();
2
3const Component = function () {}
は、Component
はconstructor
じゃねーよ!(ようは未定義なので)、とエラーが起きます。
JavaScriptにおいては、function
キーワードは少し特別扱いがされており、
上記の例のように、どこで定義しても、定義の前行で使ってもエラーが出ないようになっています。
しかし、const
などのキーワードで宣言した場合、通常の変数として定義されるため、
定義の前行で使用することはできません。
ただし、せっかく、Node.jsでの開発なので、
個人的には、function
キーワードは使うべきではないと思います。
理由は長くなるので割愛しますが、
javascript アロー関数 function
などのキーワードで検索すると、いろいろと考察記事とかが出てくるので参考にされるといいかと。
関数をオブジェクトとして扱える、くらいの知識です。
これに関しては、両定義の仕方も同じくオブジェクトになりますので、違いはありません。
(定義の順番の影響と、再代入可能か不可能かの違い以外はほとんどないと考えていい ← constructor
も両方ともFunction
となるため)
以上です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/28 20:03
2020/03/28 20:04
2020/03/28 20:25 編集
2020/03/28 20:34
2020/03/28 20:38
2020/03/28 20:42
退会済みユーザー
2020/03/29 07:13