在PHP中你可以做这样惊人/可怕的事情:
$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1
Run Code Online (Sandbox Code Playgroud)
有没有办法用Javascript做这样的事情?
例如,如果我有一个var name = 'the name of the variable';可以获得名称变量的引用name?
有没有办法动态获取函数的函数参数名称?
假设我的函数看起来像这样:
function doSomething(param1, param2, .... paramN){
// fill an array with the parameter name and value
// some other code
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何从函数内部获取参数名称及其值的列表到数组中?
我有一种感觉,这可能是不可能的,但我想确定一个变量的原始变量名称,该变量已经传递给javascript中的函数.我不知道如何更好地解释它,所以看看这个例子是否有意义.
function getVariableName(unknownVariable){
return unknownVariable.originalName;
}
getVariableName(foo); //returns string "foo";
getVariableName(bar); //returns string "bar";
Run Code Online (Sandbox Code Playgroud)
这是我正在处理的jquery插件,我希望能够显示传递给"调试"函数的变量的名称.
我想创建一个快速函数,它将console.log变量名称和值.我希望在控制台中显示该函数的结果:foo: bar.
我对该函数的基本思想如下:
function varlog(var_name)
{
console.log(var_name + ": " + eval(var_name));
}
Run Code Online (Sandbox Code Playgroud)
我打电话的是:
function someRandomFunction()
{
var foo = "bar";
// ... some stuff happens
varlog("foo");
}
Run Code Online (Sandbox Code Playgroud)
如果foo是全局的,则此方法有效,但在提供的示例中不起作用.另一个只能全局运作的选择是使用window[var_name]而不是可怕的eval.
我不认为我问的是可能的,但我想我会把它扔出去.
我花了很多时间试图变懒.我目前的方法是console.log('foo: ' + bar);正常的.但现在我只想知道这是否可行.
我在搜索/创建现有内容时引用的其他一些问题:
-
编辑:varlog(foo)如果名称"foo"可以从变量派生,我很乐意打电话.
我希望inspect.getargspec()在Javascript中使用相当于Python的东西.
我知道你可以arguments从Javascript函数中获取列表,但我真正想要的是来自最初定义的函数的参数的名称.
如果这实际上是不可能的,我将不得不通过获取函数的字符串来"强制"它,即myFunc.toString()然后解析出...内部的函数function myFunc(...).有谁知道如何以一般方式进行解析?
谢谢你的任何提示.