[英]How do I call a function within an IIFE expression
刚开始学习 js 并使用 Javascirpt absolute Beginner's Guide 这本书。 问题来自书中的一个例子:
var awesomeSauce = (
function () {
var secretCode = "Zorb!";
function privateCheckCode(code) {
if (secretCode == code) {
alert("You are awesome!");
} else {
alert("Try again!");
}
}
// the public method we want to return
return {
checkCode: privateCheckCode
};
})();
问题是我 go 如何调用这段代码?
awesomeSauce("Zorg!");
不起作用,也不起作用
awesomeSauce().privateCheckCode("Zorg!");
awesomeSauce.checkCode("Zorg!");
IIFE返回带有checkCode
属性的对象,该属性是(私有)函数。
IIFE的要点是,此操作将变量和函数的作用域限定在其中,以使它们无法从外部访问(例如, privateCheckCode
和secretCode
仅存在于IIFE内部)。
将返回的对象视为所选值或功能的“导出”。
var awesomeSauce = ( function () { var secretCode = "Zorb!"; function privateCheckCode(code) { if (secretCode == code) { alert("You are awesome!"); } else { alert("Try again!"); } } // the public method we want to return return ( privateCheckCode ); })(); awesomeSauce('Zorb!')
嘿,我了解不多,但是我碰巧解决了这个问题:return语句返回一个表达式而不是代码块。 只是通过代码,我想你会明白的
同意卢塞罗的回答
1)IIFE被执行
2)执行结果分配给awesomeSauce
那么执行的结果是什么?
代码下方是返回的任何函数
return {
checkCode: privateCheckCode
};
在这种情况下,它将返回一个对象,该对象具有名为“ checkCode”的属性,该属性引用内部函数“ privateCheckCode”。
简而言之,它变成了
awesomeSauce = {
checkCode: privateCheckCode
};
因此,您可以像这样调用您的函数awesomeSauce.checkCode("Zorb!");
你可以用console.log(awesomeSauce.checkCode('Zorb;'));
调用它。
因为 iife 返回一个 object,它具有 checkCode 键和 privateCheckCode 作为值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.