是否可以在函数内获取设置变量的名称?
public MyFunction(): any {
//get myVarName as string;
}
var myVarName = MyFunction();
是否可以在函数内获取设置变量的名称?
public MyFunction(): any {
//get myVarName as string;
}
var myVarName = MyFunction();
不,您无法myVarName
获取MyFunction()
.
在 内部MyFunction()
,不知道哪些其他变量也可能包含对的引用MyFunction()
或可能包含调用结果的变量MyFunction()
。
你是否意识到这行代码:
var myVarName = MyFunction();
实际调用MyFunction()
并执行它,但myVarName
直到函数运行后才分配?
可能有零个、一个或数百个其他变量包含对被调用函数的引用。函数与可能还包含对该函数的引用的变量之间没有联系。如果您想要这样的链接,则必须以某种方式构建自己的数据结构来跟踪该链接,然后MyFunction()
可以遍历该数据结构以查看谁引用了它。但是,每次分配引用时,您还必须修改跟踪该引用的数据结构。
如果像这样的所有函数引用而不是全局变量,而是myVarName
保存在已知数组或已知对象中,则可以MyFunction()
搜索该已知数组或对象并找到指向自身的所有条目。
与 StackOverflow 一样,如果您描述了您真正想要解决的问题(而不是您正在寻找的特定解决方案),您可能会得到更好的建议。
不,因为变量赋值发生在函数调用之后。
对于堆栈调用中发生的任何事情,您都可以进行堆栈跟踪:
try{
throw new Error('Buck stops here')
}catch(e){
console.log(e.stack) // Yea!
}
更多:http ://tobyho.com/2011/06/08/the-javascript-stacktrace-blog/