Rob*_*Rob 1 javascript jquery anonymous-function
如果我有一大堆这样的代码:
.hover(
function () {
hoverState($("#navbar a").index(this),1);
},
function () {
hoverState($("#navbar a").index(this),-1);
});
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱匿名函数,只是说:
.hover(
hoverState($("#navbar a").index(this),1),
hoverState($("#navbar a").index(this),-1);
);
Run Code Online (Sandbox Code Playgroud)
匿名函数的原因是将调用推迟到hoverState,直到发生悬停事件.如果没有一些函数引用,你最终会调用hoverState,函数调用的结果将成为hover方法的参数,这肯定不是你想要的.替代方案是拥有一个命名函数,但这确实没有更好,在某些方面,实际上更糟糕.
不,因为否则你的电话:
hoverState($("#navbar a").index(this),1)
Run Code Online (Sandbox Code Playgroud)
将在调用悬停函数本身的同时进行评估.由于Javascript支持闭包和第一类函数,因此您可以创建一个包装函数:
function wrapper(position){
function _f(){
hoverState($("#navbar a").index(this), position);
}
return _f;
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
.hover(
wrapper(1),
wrapper(-1),
)
Run Code Online (Sandbox Code Playgroud)
但这种方法的好处值得怀疑.
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |