为什么从Javascript clousure实际调用未定义的函数?

时间:2015-07-29 13:45:08

标签: javascript closures

我正在研究这段代码

1I'm accessible as YAHOO.myProject.myModule.myPublicMethod.
201I can be accessed only from within YAHOO.myProject.myModule.
02I can be accessed only from within YAHOO.myProject.myModule
3undefined
4I'm accessible as YAHOO.myProject.myModule.myPublicProperty.

并想知道输出:

myPrivateMethod()

任何人都可以解释为什么 02I只能从YAHOO.myProject.myModule 中访问,如果console.log("3"+myPrivateMethod())未定义,如输出中所示?以及它在public void btnDeletePhotoClicked(View v) { ImageView iv = (ImageView) findViewById(R.id.imgSpecimenPhoto); iv.setImageDrawable(null); } 之前显示的原因?

1 个答案:

答案 0 :(得分:2)

  

任何人都可以解释为什么02I只能从YAHOO.myProject.myModule中访问,如果myPrivateMethod()未定义,如输出中所示?

myPrivateMethod不是undefinedmyPrivateMethod()是。函数已定义,它没有return语句,因此其返回值为undefined

  

以及它在console.log(“3”+ myPrivateMethod())之前显示的原因?

评估

myPrivateMethod()(因此执行函数并触发其中的console.log语句),然后才能将其与字符串"3"连接并传递给另一个console.log }}