1 var f1 = function (func1) { 2 // return function () { 3 func1.apply(); 4 // }; 5 6 } 7 8 9 10 $(window).resize( 11 f1(function () { alert('123'); }));
1到6行的代码我的理解是给匿名函数取了个名字叫f1。应该我下面事件调用应该就直接alert出来呀!为什么没有出来,而且加载页面既然就出来了。
还有一个问题为什么我调动浏览器的大小事件都不触发了!
我把注释内容取消就可以了! 为什么一定要在f1函数中建立一个匿名函数前面还要加个return。
我应该怎么理解呀!
求大神呀
return是为了返回一个值,var f1 = function (func1) {}这样的,你想想赋值一般是a=b,吧b换成了function(func1){},在function中,你没有return,那默认为没有值,或者你赋值失败,故你在下面调用的时候无法弹出了。。。
不好意思,谢谢。虽然你回答错误了!我查了下 不是return的原因 是括号的原因。我在onresize调用方法时有括号就必须要有return。所以onresize事件的值是return后面的匿名函数 不是等号后的匿名函数!
不好意思,谢谢。虽然你回答错误了!我查了下 不是return的原因 是括号的原因。我在onresize调用方法时有括号就必须要有return。所以onresize事件的值是return后面的匿名函数 不是等号后的匿名函数!
原来你已经发现了,你传递的并不是一个函数
resize那里的问题吧,单独写看看
把逻辑分开来看:
var f1 = function (func1) { func1.apply(); } //等价于 var f1 = function (func1) { func1.apply(); return undefined; //函数的默认返回值 } $(window).resize(f1(function () { alert('123'); })); //其中下面这段代码等价于 f1(function () { alert('123'); })等价于执行alert,因为f1()表示函数调用。 所以就导致你的resize事件代码成了以下这种情况: $(window).resize(undefined); 当然就没反应了。
楼上正解!
$(window).resize(),括号里面所期待的参数是一个function,
而楼主所给的参数是调用f1所得到的返回值,按照f1的定义调用f1以后所得的返回值是undefined,这样相当于没有绑定resize事件。
但是当你把注释去掉以后,调用f1得到的返回值就是一个function,那就相当于给resize事件绑定了这个返回的function,自然能alert出来了。