为什么我执行这个javascript闭包代码时有两个不同的结果

时间:2011-09-27 13:52:07

标签: javascript closures

我的代码:

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

在FireBug中执行: N(); 结果是“凯文”

在Chrome&中执行IE9:

document.writeln(N); ======> show“undefine” document.writeln(N()); ======>不显示任何内容

我想知道眉毛在执行代码时到底做了什么。 感谢。

该代码是“面向对象的JavaScript”一书的演示,第3章,结束2#

1 个答案:

答案 0 :(得分:3)

在执行函数n之前,变量f()没有给出值(即,未分配给该函数) - 这在您显示的代码中不会发生。

所以document.writeln(n);应显示“undefined”,而document.writeln(n());应该是错误,因为n不是函数。

我不知道为什么它在FireBug中有效 - 你尝试过时已经执行了f()吗?