【发布时间】:2014-12-07 06:27:44
【问题描述】:
function abc(v){
console.log(v);
}
var abcd= abc;
var module = {
name: "hello",
innerFunc: function(){
console.log("name "+name);
},
outterFunc: abc("run from module")
}
有没有办法在innerFunc 中引用name 的值?
我的想法是应该有办法,因为它们都在 module 对象中。我可能完全错了。
请告诉我为什么,为什么不呢?
PS:
其实我是通过添加以下代码想出来的
var module = {
name: "hello",
innerFunc: function(){
var self = this;
console.log("name "+self.name);
},
outterFunc: abc("run from module")
}
那么,接下来的问题是,为什么innerFunc 不像outterFunc 那样运行,outterFunc 在运行代码后立即被调用,为什么innerFunc 必须显式调用为module.innerFunc() .
谢谢
【问题讨论】:
-
因为您正在调用
abc("run from module")并将其返回值分配给outterFunc(拼写“outer”是错误的),而对于innerFunc,您只是将函数表达式分配给属性没有调用它。因此,您可以在之后使用module.innerFunc调用它。您是否对一流的功能感到困惑?
标签: javascript closures