2

重複の可能性:
変数名を取得します。JavaScript「リフレクション」

変数の名前を知る方法はありますか?

例:

var a = 1;
var b = 4;

function getName(param){
    //What should I return here?
}

私がやりたいのは、getName呼び出した場合は「a」を返し、呼び出したgetName(a)場合は「b」を返すことですgetName(b)

これは可能ですか?

4

3 に答える 3

4

いいえ、それはきれいな方法では不可能であり、これに役立つユースケースがあるとは思えません。

于 2012-06-13T13:12:32.617 に答える
1

このStackOverflow answerで説明されているように、オブジェクトのプロトタイプを変更して、これを行う関数を追加できます。

Object.prototype.getName = function() { 
   var funcNameRegex = /function (.{1,})\(/;
   var results = (funcNameRegex).exec((this).constructor.toString());
   return (results && results.length > 1) ? results[1] : "";
};
于 2012-06-13T13:16:32.777 に答える
-1

変数名を取得できません。ただし、この値を正確に取得した変数の名前を取得できます (同じ値を持ついくつかの変数を取得した場合は、最初に定義されます)。また、この関数はグローバル変数に対してのみ機能します。

var a = 1;
var b = 4;

function test(value) {
  for (var x in window)
    if (window[x] === value)
      return x;
}

alert(test(b));
于 2012-06-13T13:15:51.017 に答える