在定义javascript函数属性之前访问它们?

时间:2010-03-03 14:20:15

标签: javascript function properties

我正在阅读这个帖子:Hidden Features of JavaScript? 并发现这篇文章:Hidden Features of JavaScript?

我正在使用firebug中的代码,我发现这段代码似乎工作正常:

var fn = function(x) {
   console.log(this.foo);
}
fn.foo = 1;

为什么我可以在分配之前访问该功能的属性?

3 个答案:

答案 0 :(得分:2)

返回值1不是来自console.log(this.foo),

它来自fn.foo = 1,firebug只返回其控制台中的最后一个值

试试这个,你也会看到1

fn=function(){}
fn.foo = 1;

答案 1 :(得分:1)

因为当您将其分配给fn时,不会执行该功能。变量在执行时间内得到解决。

即使没有fn.foo = 1;行,从对象获取未定义的属性仍然会返回undefined。这不是错误。

此外,this.foo在您运行fn()时不会打印1,因为函数内的this不指向函数fn,而是window ,或接收new fn()的实例。

答案 2 :(得分:0)

如果没有定义你无论如何都可以访问它,它只有值undefined

我猜您在fn(x)声明后致电fn.foo = 1;。如果您之前调用它,则会在undefined之后记录1