如何在 IIFE 表达式中调用函数
How do I call a function within an IIFE expression
刚开始学习js,用的是Javascirpt an 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
};
})();
问题是我该如何调用这段代码?
awesomeSauce("Zorg!");
不起作用,
也不起作用
awesomeSauce().privateCheckCode("Zorg!");
awesomeSauce.checkCode("Zorg!");
IIFE returns 具有 checkCode
属性 的对象,即 属性 是(私有)函数。
IIFE 的要点是它限定了内部变量和函数的范围,因此它们不能从外部访问(例如 privateCheckCode
和 secretCode
仅存在于 IIFE 内部)。
将返回的对象视为 "export" 所选值或功能。
同意Lucero的回答
1) The IIFE gets executed
2) result of the execution gets assigned to awesomeSauce
那么执行的结果是什么呢?
函数返回的内容,代码下方
return {
checkCode: privateCheckCode
};
在这种情况下,它 returns 一个对象 属性 名为 "checkCode",它引用内部函数 "privateCheckCode"。
简而言之,它变成了,
awesomeSauce = {
checkCode: privateCheckCode
};
因此,您可以这样调用您的函数awesomeSauce.checkCode("Zorb!");
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 语句 return 表达式而不是代码块。看一下代码我想你会明白
你可以用console.log(awesomeSauce.checkCode('Zorb!'));
来调用它
作为 iife returns 一个以 checkCode 键和 privateCheckCode 作为值的对象。
刚开始学习js,用的是Javascirpt an 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
};
})();
问题是我该如何调用这段代码?
awesomeSauce("Zorg!");
不起作用,
也不起作用awesomeSauce().privateCheckCode("Zorg!");
awesomeSauce.checkCode("Zorg!");
IIFE returns 具有 checkCode
属性 的对象,即 属性 是(私有)函数。
IIFE 的要点是它限定了内部变量和函数的范围,因此它们不能从外部访问(例如 privateCheckCode
和 secretCode
仅存在于 IIFE 内部)。
将返回的对象视为 "export" 所选值或功能。
同意Lucero的回答
1) The IIFE gets executed
2) result of the execution gets assigned to awesomeSauce
那么执行的结果是什么呢?
函数返回的内容,代码下方
return {
checkCode: privateCheckCode
};
在这种情况下,它 returns 一个对象 属性 名为 "checkCode",它引用内部函数 "privateCheckCode"。
简而言之,它变成了,
awesomeSauce = {
checkCode: privateCheckCode
};
因此,您可以这样调用您的函数awesomeSauce.checkCode("Zorb!");
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 语句 return 表达式而不是代码块。看一下代码我想你会明白
你可以用console.log(awesomeSauce.checkCode('Zorb!'));
作为 iife returns 一个以 checkCode 键和 privateCheckCode 作为值的对象。