是否可以在JavaScript中记录变量名?

问题描述 投票:2回答:1

是否可以在JavaScript中记录变量名(不是值)?

var max_value = 4;
console.log(max_value); // should log "max_value" as a string

更新:我需要一个测试函数,该函数应该能够将任何变量名(作为参数传递)记录为字符串,而不仅仅是这个变量。

string variables console.log
1个回答
2
投票

有一种可以帮助您的解决方案。我从this stackoverflow answer抓取了此函数,该函数能够获取函数参数的名称:

var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;
function getParamNames(func) {
  var fnStr = func.toString().replace(STRIP_COMMENTS, '');
  var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
  if(result === null)
     result = [];
  return result;
}

那么,您现在要做的就是将变量名用作匿名函数的参数,并将所有函数作为getParamNames的参数传递:

variablesNames = getParamNames(function (max_value, min_value) {});

这将返回一个类似这样的数组:

result => ["max_value", "min_value"];

让我们付诸实践,首先将getParamNames函数的名称更改为这样的简单名称:

function __ (func) {
   // code here  ...
}

第二件事,不是返回数组,而是返回数组的第一个元素,请更改此内容:

return result;

对此:

return result.shift();

现在,您可以像这样获得变量的名称:

__(function( max_value ){});
© www.soinside.com 2019 - 2024. All rights reserved.