JavaScriptで関数の前に感嘆符(!)を付ける意味とは?
関数の前に付く感嘆符(!)の役割
JavaScriptで関数の前に感嘆符(!)を付けると、その関数が「即時実行関数式(IIFE:Immediately-Invoked Function Expression)」であることを示します。この書き方は、関数を定義すると同時にすぐに実行したい場合に使われるテクニックです。
感嘆符だけでは関数は実行されない
感嘆符(!)単独では関数は呼び出されません。関数を実際に実行するには、末尾に () を付ける必要があります。
!function foo() {}()() は ! よりも演算子の優先順位が高いため、このコードでは関数が即座に呼び出されます。
一般的なIIFEの書き方
同じことは、以下のように関数全体を括弧で囲む形式でも記述できます。こちらの方がより一般的な書き方です。
(function(){})();戻り値がtrueになる理由
感嘆符(!)を使うと、式全体の評価結果が true になります。これは、即時実行関数式がデフォルトでは undefined を返すためです。その結果、!undefined が評価され、これは true となります。つまり、感嘆符は関数式を論理否定することで、式として成立させる役割も果たしているのです。
-
JavaScriptで「関数式は常に定数値」とは?const再代入時のエラー原因と対処法
JavaScriptでは、constキーワードを使って宣言された変数は定数として扱われます。一度値を代入した後、同じ変数に別の値を再代入しようとすると、プログラムの実行時にエラーが発生します。これは関数式(アロー関数など)をconstに代入した場合も同様です。 例えば、以下のようにアロー関数をconstで宣言したとします。 const result = (first, second) => first * second; この状態で、resultに対して別の関数を再代入してみると、エラーが発生することを確認できます。 コード例 以下のコードを見てみましょう。 const re
-
JavaScriptのクラスで使う「get」キーワードとは?ゲッターの基本をわかりやすく解説
JavaScriptの「get」キーワードは、クラス内でゲッター(getter)関数を定義するために使われる構文です。C#やJavaなど、他のプログラミング言語でもおなじみの概念ですが、JavaScriptでも同様にプロパティのように値を取得できる便利な機能として提供されています。getキーワードの基本的な使い方クラス内でgetを使うと、メソッドでありながら、あたかもプロパティのようにアクセスできる関数を定義できます。以下のように記述します。class Employee { constructor(name) { this.name = na