1. ホーム
  2. ジャバスクリプト

[解決済み】スコープ内の全変数の取得

2022-04-20 06:11:35

質問

javascriptで現在スコープ内にあるすべての変数を取得する方法はありますか?

どのように解決するのですか?

スコープ内の変数は、スコープチェーンによって決定され、プログラムからはアクセスできません。

詳しくはECMAScript (JavaScript) 仕様をご覧ください (かなりたくさんあります)。 以下は、リンクです。 は公式ページで、正規の仕様書(PDF)をダウンロードできます。 こちらも をクリックすると、公式のリンク可能なHTML版が表示されます。

Camsoftへのコメントによる更新

変数 スコープ内 のイベント関数は、イベント関数の呼び出し方ではなく、イベント関数を定義する場所によって決まります。 しかし を使えば、あなたの関数で何が使えるかについての有益な情報が得られるかもしれません。 this と引数で、KennyTMが指摘したようなことをすることです( for (var propName in ____) )それは、あなたに提供された様々なオブジェクトで何が利用可能かを教えてくれるからです( this と引数を与えます。もし、どんな引数を与えるのかがわからない場合は arguments 変数が暗黙のうちに定義されています)。

つまり、関数を定義する場所によってインスコープになるものに加えて、他の手段で利用できるものを、こうして見つけることができるのです。

var n, arg, name;
alert("typeof this = " + typeof this);
for (name in this) {
    alert("this[" + name + "]=" + this[name]);
}
for (n = 0; n < arguments.length; ++n) {
    arg = arguments[n];
    alert("typeof arguments[" + n + "] = " + typeof arg);
    for (name in arg) {
        alert("arguments[" + n + "][" + name + "]=" + arg[name]);
    }
}

(それを発展させて、より有用な情報を得ることができます)。

その代わりに、Chromeのdev toolsのようなデバッガ(普段はChromeを開発に使っていなくても)を使うか、あるいは ファイヤーバグ (普段はFirefoxを使っていなくても)、OperaのDragonfly、IEの"F12 Developer Tools"などです。そして、彼らが提供するどんなJavaScriptファイルにも目を通してください。そして、適切なドキュメントを提供するよう、彼らの頭を叩いてください :-)