В этой ситуации аргументы.callee.name ничего не получают.Как получить текущее имя текущей функции при объявлении с помощью функции "foo = function() {...}"?
foo = function(){
console.log(arguments.callee.name);
}
Есть ли решение?
В этой ситуации аргументы.callee.name ничего не получают.Как получить текущее имя текущей функции при объявлении с помощью функции "foo = function() {...}"?
foo = function(){
console.log(arguments.callee.name);
}
Есть ли решение?
Вы не назвали его, поэтому у него нет имени.
foo = function(){
return (arguments.callee.name);
};
bar = function foobar() {
return (arguments.callee.name);
};
function foobar() {
return (arguments.callee.name);
}
console.log(foo()); //""
console.log(bar()); //"foobar"
console.log(foobar()) //"foobar"
Разница между foo()
и foobar()
является то, что foo()
является выражением функции, тогда как foobar()
является объявлена функция. Разница между foo()
и bar()
и заключается в том, что у одного есть имя, а другое нет. Оба являются выражением функции. Объявленным функциям требуется имя, выражение функции - нет. Смотрите этот канонический вопрос для получения дополнительной информации:
var functionName = function() {} vs function functionName() {}
Решение является правильным. У вашей функции нет имени. – Bergi
Почему вы пытаетесь это сделать? Аргумент callee - черная магия и не будет работать в строгом режиме. – hugomg
Зачем вам нужно имя функции? –