为什么一个未定义的函数实际上是从Javascript clousure调用的
Why an undefined functions is actually called from Javascript clousure?
我正在研究这段代码
var myModule = function () {
//"private" variables:
var myPrivateVar = "01I can be accessed only from within YAHOO.myProject.myModule.";
//"private" method:
var myPrivateMethod = function () {
console.log("02I can be accessed only from within YAHOO.myProject.myModule");
}
return {
myPublicProperty: "I'm accessible as YAHOO.myProject.myModule.myPublicProperty.",
myPublicMethod: function () {
console.log("1I'm accessible as YAHOO.myProject.myModule.myPublicMethod.");
//Within myProject, I can access "private" vars and methods:
console.log("2"+myPrivateVar);
console.log("3"+myPrivateMethod());
//The native scope of myPublicMethod is myProject; we can
//access public members using "this":
console.log("4"+this.myPublicProperty);
}
};
}();
并想知道输出:
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.
谁能解释为什么 02I 只能从 YAHOO.myProject.myModule 中访问,如果输出中未定义myPrivateMethod()
,则输出? 以及为什么它显示在console.log("3"+myPrivateMethod())
之前?
谁能解释为什么如果 myPrivateMethod(( 未定义,则输出 02I 只能从 YAHOO.myProject.myModule 中访问?
myPrivateMethod
不是undefined
. myPrivateMethod()
是。该函数已定义,它没有return
语句,因此其返回值为 undefined
。
以及为什么它显示在 console.log("3"+myPrivateMethod((( 之前?
myPrivateMethod()
被计算(因此执行函数并触发其中的console.log
语句(,然后才能与字符串"3"
连接并传递给其他console.log
。
相关文章:
- Javascript.闭包和dynamic'这'实际上具有约束力
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- javascript中的每个函数调用实际上都是一个新线程吗
- @private注释在 Google Closure JavaScript 代码中实际上做了什么
- .files 在 JavaScript 中实际上做了什么?
- 在 JavaScript 中是否有可能在指定点获取一个元素,如果它不在顶部但实际上可见
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- JavaScript setTimeout() 实际上并没有执行它的函数
- JavaScript aws-sdk S3 deleteObject(s) 成功,但实际上并没有删除任何内容
- '值'关键字实际上在JavaScript中工作,我们可以同时获得一个值并分配它吗
- 在JavaScript中,换行符实际上并不是在创建新行,有没有其他选择,或者我做错了什么
- JavaScript-如何迭代实际上是映射的对象
- Javascript网页期望至少加载一个地图,但实际上可以'不要装任何东西
- 验证IP地址实际上是一个使用Javascript的网站
- 包中.json实际上是json中的json,而不仅仅是JavaScript
- 为什么console.log()和alert()函数实际上不是Javascript的一部分
- “你赢了一台ipad”是怎么回事?蹩脚网站上的Javascript弹出窗口实际上就是这样
- Javascript字符串计算从PHP变量包含数学表达式(但实际上是一个日期)
- 如何程序设置Javascript getter/setter ?(或者实际上是闭包作用域)
- 为什么一个未定义的函数实际上是从Javascript clousure调用的