почему у меня есть два разных результата, когда я выполняю этот код закрытия JavaScript - PullRequest
0 голосов
/ 27 сентября 2011

мой код:

var n;
function f(){
   var v = "kevin";
   n = function(){
      return v;
   }
}

выполнить в FireBug: п (); результат "кевин"

выполнить в Chrome и IE9:

document.writeln (п); ======> показать "undefine" document.writeln (п ()); ======> ничего не показывать

Я хочу знать, что именно делают брови при выполнении кода. Благодаря.

Этот код является демонстрационной версией книги "Объектно-ориентированный JavaScript", глава 3, закрытие 2 #

1 Ответ

3 голосов
/ 27 сентября 2011

Переменной n не присваивается значение (т. Е. Она не присваивается этой функции) до тех пор, пока не будет выполнена функция f(), чего не происходит в показанном вами коде.

Так что document.writeln(n); должно показывать "undefined", тогда как document.writeln(n()); должно быть ошибкой, поскольку n не является функцией.

Я не знаю, почему это работает в FireBug - вы уже выполнили f(), когдаты попробуешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...