为了账号安全,请及时绑定邮箱和手机立即绑定

关于addLoadEvent函数的一点小疑问

关于addLoadEvent函数的一点小疑问

慕尼黑5688855 2018-12-20 16:14:52
function styleHeaderSibling(tag, theclass){    if(! document.getElementsByTagName)  return false;    var headers = document.getElementsByTagName("h1");    for(var i =0; i<headers.length; i++){        var elem = getNextElement(headers[i].nextSibling);        //elem.style.fontWeight = "bold";        //elem.style.fontSize = "1.2em";        //elem.className ="intro";       //有些已有className会被覆盖掉。所以写出addClass函数。        addClass(elem, "intro");         }addLoadEvent(function(){    styleHeaderSibling("h1", "intro");});这个是dom编程艺术 第九章对函数进行抽象的一点内容,我想问的是能不能直接写addLoadEvent(styleHeaderSibling("h1", "intro"));进行调用。我试了下代码,是可以运行的,这里我有两点疑问:1、addLoadEvent(func)函数的定义,func是不加括号的,用这个语句addLoadEvent(styleHeaderSibling("h1", "intro"));调用为什么还能正常运行。2、为什么要特地弄个匿名函数出来。必要性在哪里?
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

写法一:addLoadEvent(styleHeaderSibling("h1", "intro"))你这么写,运行的时候,styleHeaderSibling("h1", "intro")函数在这就被调用了。


写法二:addLoadEvent(function(){


styleHeaderSibling("h1", "intro");

});


是交给addLoadEvent方法里面的callback执行函数执行


通俗说应该就是,第一个写法执行完styleHeaderSibling再执行addLoadEvent

第二个写法是先执行addLoadEvent,函数体内部再执行styleHeaderSibling


论必要性,其实是看你编程时的逻辑了,各有场合


第二种写法是回调函数,传入的函数可以在主函数执行的时候随时触发,第一种写法相当于把传的函数执行完的再执行主函数


查看完整回答
反对 回复 2019-01-16
  • 1 回答
  • 0 关注
  • 378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信