📝

アンダーバー(_)のみの引数の意味|JavaScript

2023/06/18に公開

JavaScriptで以下のソースのようなアンダーバーのみの引数は
「引数として設定するけど関数内では使われないよ」
という意味らしいです。
これはプログラミングの慣習としてあるもので機能的には通常のkeyなどでも同じことで特別な機能や挙動はないとのことでした。

サンプルソース

Object.entries(object).filter(([_, value]) => {value ? true : false ;});

上記ソースではobjectを配列に変換してfilter関数内()でtrueになった配列を返すというものになります。ここで使われている_(アンダーバー)は配列のkeyが入ってきます。

_が変数名や関数名の先頭につく場合

変数名や関数名の先頭にアンダーバーを付与する場合はプライベートという意味でつけるとのことでした。
プライベートというのはスコープの話で何かしらの関数内やクラス内でのみ使用する場合その変数はプライベートと呼ばれます。

class SampleClass {
    constructor() {
        this._samplePrivateVariable = "private";
    }

    getMyPrivateVariable() {
        return this._samplePrivateVariable;
    }
}

プライベートクラス機能|ES2020

なおES2020ではちゃんとした機能として_(アンダーバー)ではなく、#(シャープ)を付与して外部からアクセスできなくすることが可能になるようです。
この#がついた識別子(変数名や関数名)をプライベートインスタンスフィールドと呼びます。

class SampleClass {
    constructor() {
        this._samplePrivateVariable = "private";
    }

    getMyPrivateVariable() {
        return this._samplePrivateVariable;
    }
}
◾️参考サイト

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes/Private_class_fields

Discussion