是否可以在JavaScript中记录变量名称(而不是值)?
var max_value = 4;
console.log(max_value);
// should log "max_value" as a string ?
更新:我需要一个测试函数,它应该能够将任何变量名称(作为参数传递)记录为字符串,而不仅仅是这一个变量。
答案 0 :(得分: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 ){});