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
论必要性,其实是看你编程时的逻辑了,各有场合
第二种写法是回调函数,传入的函数可以在主函数执行的时候随时触发,第一种写法相当于把传的函数执行完的再执行主函数
添加回答
举报
0/150
提交
取消