在JavaScript中,獲取當前函數名是非常常見的需求。不同的應用場景有不同的方法,本文將為大家探討幾種獲取當前函數名的方法。
一、arguments.callee
function getName(){ console.log(arguments.callee.name); } getName(); //輸出 getName
arguments.callee代表當前正在執行的函數。
二、函數名稱
function getName(){ console.log(getName.name); } getName(); //輸出 getName
函數名稱可以通過函數的name屬性來獲取。
三、Function.prototype.caller
function getName(){ console.log(getName.caller.name); } function foo(){ getName(); } foo(); //輸出 foo
Function.prototype.caller代表調用當前函數的函數。
四、Error對象
function getName(){ try { throw Error(''); } catch (e) { console.log(e.stack.match(/Function.<anonymous>\s*\(/m)[0]); } } getName(); //輸出 Function.getName(
通過拋出一個Error對象并獲取它的堆棧信息,可以得到當前函數的名稱。
總結:以上四種方法都可以獲取當前函數名,但是它們的使用場景不同,需要根據不同的需求選擇不同的方法。