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 答案中所述:

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

无法获取变量 name。但是你可以得到变量的名称,谁得到了这个值(如果你有一些具有相等值的变量,你会首先定义)。此函数仅适用于全局变量。

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 回答