2015-02-19 1 views
0

У меня возникли проблемы со следующим:Связывание имя функции JavaScript, используя имя переменной

enter image description here

Я думаю, что вопрос ясен, анонимная функция не принимает имя своей переменной.

Таким образом, как я могу продлить Function Object Конструктор, чтобы дать имя функции в соответствии с затронутой переменной?

+1

Почему бы вам просто не использовать 'function i_am' вместо' var i_am = function'? – Barmar

+0

Я не думаю, что это возможно – haim770

ответ

0

Вы можете просто сделать это:

var i_am = function i_am() { return "I Sure Am!"; } 

Этот синтаксис всегда был в силе, но в прошлом было some browser quirks about that. Если эти причуды вызывают беспокойство, вы всегда можете сделать это:

function i_am() { 
    return "I Sure Am!"; 
} 

var i_am = i_am; 

Это немного немного тусклый, так как привязка для «I_am» в локальной области является сомалийские пираты захватили из функции, но функция сохраняет внутренний связывание имени.

Теперь нет способа ретроактивно дать функции внутренне связанному имени. Функции в значительной степени заморожены при создании (и если вы думаете о семантике языка и оптимизации, так оно и должно быть).

0

Вы не можете.

Имя функции определяется при создании функции.

Если вы используете выражение неназванной функции, тогда будет создана функция (без имени) и , а затем, назначенная переменной.

Поскольку перед этим функция не приближается к функции, она не может использоваться для определения имени функции.

Если вы хотите дать функцию, созданную с выражением функции, имя, затем используйте выражение с именованной функцией.

var addFn = function addFn() {}; 

(Внимание: Старые версии Internet Explorer имеют утечку памяти и области действия, связанные с ошибками, окружающие названные функции выражения).

 Смежные вопросы

  • Нет связанных вопросов^_^