这里有个对函数执行顺序的问题搞不懂希望老师解答一下

来源:6-3 实现上下翻页功能数据渲染

暴走大熊

2016-05-31

 var readerUI = ReaderBaseFrame(RootContainer);
	          readerModel.init(function(data){
	              readerUI(data);
	          });
function ReaderBaseFrame(container){
	          function praseChapterData(jsonData){
	              var jsonObj = JSON.parse(jsonData);
	              var html = "<h4>"+ jsonObj.t+"<h4>";
	              for(var i= 0;i<jsonObj.p.length;i++){
	                  html += "<p>"+ jsonObj.p[i] + "<p>";
	              }
	              return html;
	          }
	          return function(data){
	              container.html( praseChapterData(data));
	          } 
	      }

前面那段代码在执行ReaderBaseFrame()的时候他的执行顺序是怎么样的,怎么可以做到RootContainer参数传递给container,而data参数传递给praseChapterData(data)里的data,对于这种return出去的函数不太懂,他的原理是什么,该怎么理解?

写回答

2回答

远人

2016-05-31

实际上你可以这么理解

var a = function(data){

                  container.html( praseChapterData(data));

              }

ReaderBaseFrame 就是 a

然后readerUI本质上就是a();的返回结果

0
1
暴走大熊
虽然还是不太理解,谢谢老师,我再想想。。
2016-05-31
共1条回复

远人

2016-06-01

我简化一下这个ReaderBaseFrame函数吧,实际上他就等价于: 

           ReaderBaseFrame = function(data){

                  var jsonObj = JSON.parse(data);

                  var html = "<h4>"+ jsonObj.t+"<h4>";

                  for(var i= 0;i<jsonObj.p.length;i++){

                      html += "<p>"+ jsonObj.p[i] + "<p>";

                  }

                  container.html(html);

              }


0
1
暴走大熊
恩,明白了,其实就是闭包的原理,谢谢老师~
2016-06-01
共1条回复

HTML5独立开发书城Web App

最前沿前端技术精讲, HTML5 、Vue.js 、Koa 、zepto 综合运用

3387 学习 · 685 问题

查看课程