Как я могу получить имя функции внутри функции JavaScript?

Как можно узнать имя функции, в которой я есть?

Ниже код предупреждает "Объект". Но мне нужно знать, как предупредить "Наружный".

function Outer(){

    alert(typeof this);

}

Ответ 1

Я думаю, что вы можете это сделать:

var name = arguments.callee.toString();

Подробнее об этом см. в этой статье.

function callTaker(a,b,c,d,e){
  // arguments properties
  console.log(arguments);
  console.log(arguments.length);
  console.log(arguments.callee);
  console.log(arguments[1]);
  // Function properties
 console.log(callTaker.length);
  console.log(callTaker.caller);
  console.log(arguments.callee.caller);
  console.log(arguments.callee.caller.caller);
  console.log(callTaker.name);
  console.log(callTaker.constructor);
}

function callMaker(){
  callTaker("foo","bar",this,document);
}

function init(){
  callMaker();
}

Ответ 2

Это будет работать:

function test() {
  var z = arguments.callee.name;
  console.log(z);
}

Ответ 3

Начиная с ES6, вы можете использовать Function.prototype.name. Это дает дополнительное преимущество работы с функциями стрелок, поскольку они не имеют своих собственных объектов аргументов.

function logFuncName() {
  console.log(logFuncName.name);
}

const logFuncName2 = () => {
  console.log(logFuncName2.name);
};