Javascript 关于jQuery中匿名函数的问题
我不熟悉jquery,在上面的语句中,对于每个'li'元素,都会在内存中创建一个匿名函数的新副本,或者对所有元素使用一个副本。我相信每个条目都会使用和调用相同的函数。它只是创建了一个匿名函数,但是调用了几次。将函数想象成传递给另一个函数的变量: 因此,我们的函数Javascript 关于jQuery中匿名函数的问题,javascript,jquery,functional-programming,anonymous-function,Javascript,Jquery,Functional Programming,Anonymous Function,我不熟悉jquery,在上面的语句中,对于每个'li'元素,都会在内存中创建一个匿名函数的新副本,或者对所有元素使用一个副本。我相信每个条目都会使用和调用相同的函数。它只是创建了一个匿名函数,但是调用了几次。将函数想象成传递给另一个函数的变量: 因此,我们的函数每个可能都有以下定义: $('li').each(function(index) { alert(index + ': ' + $(this).text()); }); 所以,它只有一个函数,调用了很多次 注意:这不是它实际实现
每个可能都有以下定义:
$('li').each(function(index) {
alert(index + ': ' + $(this).text());
});
所以,它只有一个函数,调用了很多次
注意:这不是它实际实现的方式
这是一个jQuery版本的实现。我添加了注释来表示集合上的迭代:
function Each(somefunc)
{
for (var item in $(this)) /*the jQuery collection*/){
someFunc();
}
}
each:函数(对象、回调、参数){
变量名,i=0,length=object.length;
如果(args){
如果(长度===未定义){
for(对象中的名称)//只有一次。JavaScript总是使用引用。你的问题是关于JavaScript和函数式编程的,而不是关于jQuery,它只是一个框架/库:)谢谢你的回答。我想在这些情况下使用命名函数。@Mark:没有区别。它应该也是由each()保存的引用
jquery函数参数。同时将item
传递到someFunc
@zerkms:是的,我只是想保留一些用于演示目的。后来添加了1.3.2中的实际实现(这是我最接近的实现!)
each: function( object, callback, args ) {
var name, i = 0, length = object.length;
if ( args ) {
if ( length === undefined ) {
for ( name in object ) //<--note the iteration over the collection
if ( callback.apply( object[ name ], args ) === false )
break;
} else
for ( ; i < length; ) //<--note the iteration over the collection
if ( callback.apply( object[ i++ ], args ) === false )
break;
// A special, fast, case for the most common use of each
} else {
if ( length === undefined ) {
for ( name in object ) //<--note the iteration over the collection, etc, etc
if ( callback.call( object[ name ], name, object[ name ] ) === false )
break;
} else
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
}
return object;