javascript 的函数自调用,问题在下面问题在下面

qq_30097999 2017-03-29 09:20:15

var a = function(){
function somesetup(){
var setup = 'done';
}
function actualwork(){
alert('Worky-worky');
}
somesetup();
return actualwork();
}();


再次调用a()的时候为什么返回undefined?
...全文
131 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
clark_kidd 2017-03-30
  • 打赏
  • 举报
回复
再次调用a() 时,关键这时 a是什么? 把这个函数整理一下便于理解 function noname(){ function somesetup(){ var setup = 'done'; } function actualwork(){ alert('Worky-worky'); return 1; } somesetup(); return actualwork; }; var a = noname(); 所以这时 a 其实 === actualwork
文盲老顾 2017-03-29
  • 打赏
  • 举报
回复
var a = function(){
    function somesetup(){
            var setup = 'done';
        } 
    function actualwork(){
            alert('Worky-worky');
        }
    somesetup();
    return actualwork();
  }(); // 这里有(),表示该闭包函数直接运行,所以 a 的值不是闭包函数本身,而是该闭包函数运行的返回值,在本例中a的值时函数 actualwork方法,而这个方法无返回值,所以调用a得到的就是undefined

xiaojunjor 2017-03-29
  • 打赏
  • 举报
回复

var a = function(){
    function somesetup(){
            var setup = 'done';
        } 
    function actualwork(){
            alert('Worky-worky');
        }
    somesetup();
    return actualwork();//返回的是actualwork()直行的结果,就是alert('Worky-worky'),这句话没有返回值,所以a是undefined
  }();
Frederick_GWD 2017-03-29
  • 打赏
  • 举报
回复
actualwork()没设定返回值,那肯定返回undefined啊
似梦飞花 2017-03-29
  • 打赏
  • 举报
回复

var a = function(){
        function somesetup(){
            var setup = 'done';
        }
        function actualwork(){
            alert('Worky-worky');
            return 1;
        }
        somesetup();
        return actualwork;
    }();
    alert(a());
啥都没返回当然是undefined啊 你那里a也是个返回值 不会是函数 当然这可能是你的意图

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧