我正在阅读这个帖子:Hidden Features of JavaScript? 并发现这篇文章:Hidden Features of JavaScript?
我正在使用firebug中的代码,我发现这段代码似乎工作正常:
var fn = function(x) {
console.log(this.foo);
}
fn.foo = 1;
为什么我可以在分配之前访问该功能的属性?
答案 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
。