是否可以在函數內獲取設置變量的名稱?Typescript獲取函數內設置變量的名稱
public MyFunction(): any {
//get myVarName as string;
}
var myVarName = MyFunction();
是否可以在函數內獲取設置變量的名稱?Typescript獲取函數內設置變量的名稱
public MyFunction(): any {
//get myVarName as string;
}
var myVarName = MyFunction();
不,你不能獲得的MyFunction()
內myVarName
變量的名稱。
在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/