//This is the function that will run every time a new item is added or the
//list is sorted.
var showNewOrder = function() {
//This function means we get serialize() to tell us the text of each
//element, instead of its ID, which is the default return.
var serializeFunction = function(el) { return el.get('text'); };
//We pass our custom function to serialize();
var orderTxt = sort.serialize(serializeFunction);
//And then we add that text to our page so everyone can see it.
$('data').set('text', orderTxt.join(' '));
};
完整代码位于http://demos.mootools.net/Dynamic.Sortables
var serializeFunction = function(*el*) { return el.get('text'); };
var orderTxt = sort.serialize(serializeFunction*(el)*);
比较代码
是否被传递?发生了什么???
我想学习高级参数用法。
如果没有声明“函数名称(参数1,参数2,参数3 ......)”之类的函数。 如果没有调用“name(parameter1,parameter2,parameter3 ...)”之类的函数。 如果参数不是变量。
如果声明像“function(parameter1,parameter2,parameter3 ...)”这样的函数。 如果调用函数如“variable(parameter1,parameter2,parameter3 ...)”。 如果参数是对象。
我很感兴趣。
你可能有一个书签上有我感兴趣的课程...请分享!!!
答案 0 :(得分:1)
分配给“serializeFunction”的值实际上是一个匿名函数,你可以看到它像指针或对函数的引用,“el”只是一个声明的输入参数,将被使用然后该函数将被调用。
查看发布的original code,sort.serialize
函数的调用,只接收函数作为参数,“serializeFunction”没有被调用,它只被传递为一个论点。
因此,接收作为参数传递的函数引用的serialize函数将负责在内部执行它。
答案 1 :(得分:0)
这是一个lambda表达式,如。
sort.serialize()
接受函数作为参数,而不是值。
答案 2 :(得分:0)
第一个代码可能是正确的。
在JavaScript中,函数与任何其他值一样存储在变量中(如serializeFunction
所示),而sort.serialize
仅引用serializeFunction
。然后使用当前元素serializeFunction
从sort.serialize
调用el
。
第二个代码会向undefined
发送serializeFunction
值(因为el
尚未在该范围内定义),这会产生错误。即使定义了el
,sort.serialize
也需要引用函数,而不是值。