【发布时间】:2011-07-19 02:05:47
【问题描述】:
我从 Stoyan Stefanov 所著的 Object Oriented JavaScript 一书的第 79 页得到了这个例子。真的不知道该做什么,我第一次运行这个程序(按回车键)它返回“未定义”。之后,按照作者的指示,我将其命名为 a(); 并收到警报 'Worky worky'
我的问题是
a) 我是否正确执行了第一步?即我是否应该通过点击“进入/返回”来运行一个自我调用程序?
b) 如果我只是按“输入/返回”来运行程序是正确的,为什么它会给出“未定义”的结果。作者说,这个程序拒绝引用(在第一次运行时)对函数 actualWork() 的引用?如果它返回一个引用,为什么它被认为是未定义的?重要吗?
请注意,我尝试在 jsfiddle.net 中输入代码,然后点击运行,但什么也没发生,但是当我第一次在控制台中运行它时出现“未定义”,然后当我执行 a( );
var a = function() {
function someSetup(){
var setup = 'done';
}
function actualWork(){
alert('Worky-worky');
}
someSetup();
return actualWork;
}();
【问题讨论】:
-
该函数返回另一个包含警报的函数。所以在调用你的外部函数之后,它将解析为
actualWork被设置为a。然后当您调用a时,您基本上调用了actualWork函数,即然后您会收到警报。
标签: javascript iife