Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery |函数在同一个函数中。这是坏习惯吗?_Javascript_Jquery - Fatal编程技术网

Javascript Jquery |函数在同一个函数中。这是坏习惯吗?

Javascript Jquery |函数在同一个函数中。这是坏习惯吗?,javascript,jquery,Javascript,Jquery,我使用此功能是为了方便,因为我将大量使用fadeTo: function fade_to(div, speed, opacity, after_fade) { $(div).fadeTo(speed, opacity, after_fade); } 然后我为after_fade参数调用相同的函数: fade_to('#div', 3000, 1, function() { fade_to('#another_div', 3000, 1)}); 那是件坏事吗?我会有速度/平滑度问题吗?

我使用此功能是为了方便,因为我将大量使用fadeTo:

function fade_to(div, speed, opacity, after_fade) {
    $(div).fadeTo(speed, opacity, after_fade);
}
然后我为after_fade参数调用相同的函数:

fade_to('#div', 3000, 1, function() { fade_to('#another_div', 3000, 1)});
那是件坏事吗?我会有速度/平滑度问题吗? 只使用jQuery的默认fadeTo函数更好吗


谢谢

你的方法很方便。我怀疑它会减缓褪色效果。在我看来,这种方法没有错。如果您决定淡入淡出效果在淡入淡出之前应为脉冲或闪烁,则只需将函数修改为脉冲/闪烁,然后淡入淡出淡出淡出的所有调用都将运行新例程。在这种情况下,这是有意义的,因为它减少了代码并提高了可维护性。Ericosg确实提出了一个有效的观点,但如果参数相同,为什么不减少参数呢

这是一种不好的做法,因为如果不将修饰符应用于函数调用的每个实例,就无法使用更多的修饰符。由于您可以在jQuery中链接修饰符,而且大多数人都同意这样做是一个有用的特性,因此您正在为自己或其他使用此代码体的人禁用该有用特性


如果要添加任何其他动画或样式,这次必须通过常规jQuery再次选择对象。额外的工作,额外的呼叫,没有真正的好处。

你的方法没有任何好处。另外,您正在使用jQuery fadeTo函数。你所做的没有错,只是没有收获。例如,如果自定义函数中的参数较少,则可以使用这种技术保存工作:

function fade_to(div, after_fade) {
    $(div).fadeTo(3000, 1, after_fade);
}

fade_to('#div', function(){ fade_to('#another_div', $.noop); });
这实际上可以避免您输入速度和不透明度参数,从而节省您的工作量。你也可以这样做

function Fade_to(speed, opacity){
     return function(div, callback){
           $(div).fadeTo(speed, opacity, callback);
     }
}
然后,您可以动态地创建参数保存函数,就像

var fade_to_foo = Fade_to(3000, 1);
fade_to_foo('#div', function(){ fade_to_foo('#another_div'); });
否则,没有理由不以jQuery的方式编写它

$('#div').fadeTo(3000, 1, function(){ $('#another_div').fadeTo(3000, 1); });

这种做法与将jQuery用作可链接的简短语法库的目标背道而驰。但是,如果此特定功能对项目有用,则可能有效。

Mike

我不知道这是否一定是一件“坏事”,因为它可能提供更简单的可用性或一些不确定的东西,因为我不知道您的示例的上下文,即使用API中给出的标准函数不会有其他效果

实际上,函数调用本身就是在CS中使用了一种称为“递归”的思想,这对遍历树很有用。你可以搜索递归和树,更好地了解我在这里指的是什么,或者执行某种数学运算,例如欧几里德算法

我想说,如果你这么做,问为什么是个好主意。在速度方面,您不会获得任何好处,因为您需要额外的时间来传递参数,而且与API的实现相比,您的函数也没有完成任何额外的功能,至少我看到了这一点。如果你要从中养成一种习惯…让我们用一个更简单的方式说 在计算上,你可能会注意到一个减速

我希望不只是回答你的问题,而是让你进一步了解为什么这样做通常是个坏主意。我同意邓斯莫雷布和汤马斯多特的观点。好点子


-sf

最好只使用jQuery的默认fadeTo函数。仅此而已。

似乎没有什么意义。它没有任何问题,性能将是一样的,但我看不出有什么好处。如果跳过几个始终相同的参数,或者使用$+div并只传递元素的idI,则会使它更加有用,因为它对包装器函数没有好处。您只是添加了一层抽象,这会让下一个维护代码的人感到困惑。如果你的函数没有以某种方式扩展它,你应该坚持使用本机库调用。谢谢大家的回答!你确实在这方面帮了我。这可能只有在速度和不透明度相同的情况下才有帮助,所以我只需要输入div的id。这不是一个大项目,我将是唯一一个在这方面工作的人,所以我只想运行得更快。再次感谢您的支持,ericosg、dan、thomasdotnet、Freshyeball、namphibian、sacredfaith……返回语句会解决这个问题。+1我喜欢这个答案,只是我会让函数为一些或所有参数设置默认值。它可能需要一些duck类型,但实际上可以减少代码。例如,我将$.noop放在函数中,然后执行类似于after_fade | |$.noop的操作……啊,我看到您使用了一个咖喱示例进行了更新。这是另一个好主意。咖喱的用处很大+1美元。