Typescript获取函数内设置变量的名称

时间:2013-05-30 06:05:05

标签: javascript typescript

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

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

var myVarName = MyFunction();

2 个答案:

答案 0 :(得分:4)

不,您无法在myVarName内获取MyFunction()变量的名称。

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

你是否意识到这行代码:

var myVarName = MyFunction();

实际调用MyFunction()并执行它,但是在函数运行之后才会分配myVarName

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

如果代替像myVarName这样的全局变量,所有这样的函数引用都保存在已知数组或已知对象中,那么MyFunction()就可以搜索已知数组或对象并找到指向自己的所有条目。

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

答案 1 :(得分: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/