重複の可能性:
変数名を取得します。JavaScript「リフレクション」
変数の名前を知る方法はありますか?
例:
var a = 1;
var b = 4;
function getName(param){
//What should I return here?
}
私がやりたいのは、getName
呼び出した場合は「a」を返し、呼び出したgetName(a)
場合は「b」を返すことですgetName(b)
これは可能ですか?
重複の可能性:
変数名を取得します。JavaScript「リフレクション」
変数の名前を知る方法はありますか?
例:
var a = 1;
var b = 4;
function getName(param){
//What should I return here?
}
私がやりたいのは、getName
呼び出した場合は「a」を返し、呼び出したgetName(a)
場合は「b」を返すことですgetName(b)
これは可能ですか?
いいえ、それはきれいな方法では不可能であり、これに役立つユースケースがあるとは思えません。
このStackOverflow answerで説明されているように、オブジェクトのプロトタイプを変更して、これを行う関数を追加できます。
Object.prototype.getName = function() {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((this).constructor.toString());
return (results && results.length > 1) ? results[1] : "";
};
変数名を取得できません。ただし、この値を正確に取得した変数の名前を取得できます (同じ値を持ついくつかの変数を取得した場合は、最初に定義されます)。また、この関数はグローバル変数に対してのみ機能します。
var a = 1;
var b = 4;
function test(value) {
for (var x in window)
if (window[x] === value)
return x;
}
alert(test(b));