0

是否可以在函数内获取设置变量的名称?

public MyFunction(): any {
   //get myVarName as string;
}

var myVarName = MyFunction();
4

2 回答 2

4

不,您无法myVarName获取MyFunction().

在 内部MyFunction(),不知道哪些其他变量也可能包含对的引用MyFunction()或可能包含调用结果的变量MyFunction()

你是否意识到这行代码:

var myVarName = MyFunction();

实际调用MyFunction()并执行它,但myVarName直到函数运行后才分配?

可能有零个、一个或数百个其他变量包含对被调用函数的引用。函数与可能还包含对该函数的引用的变量之间没有联系。如果您想要这样的链接,则必须以某种方式构建自己的数据结构来跟踪该链接,然后MyFunction()可以遍历该数据结构以查看谁引用了它。但是,每次分配引用时,您还必须修改跟踪该引用的数据结构。

如果像这样的所有函数引用而不是全局变量,而是myVarName保存在已知数组或已知对象中,则可以MyFunction()搜索该已知数组或对象并找到指向自身的所有条目。

与 StackOverflow 一样,如果您描述了您真正想要解决的问题(而不是您正在寻找的特定解决方案),您可能会得到更好的建议。

于 2013-05-30T06:14:13.830 回答
1

不,因为变量赋值发生函数调用之后。

对于堆栈调用中发生的任何事情,您都可以进行堆栈跟踪:

try{
   throw new Error('Buck stops here')
}catch(e){
   console.log(e.stack) // Yea!
}

更多:http ://tobyho.com/2011/06/08/the-javascript-stacktrace-blog/

于 2013-05-30T06:18:19.360 回答