在函数中,是可以使用函数名作为另一个函数的参数的,执行时相当于是对此函数的一次引用。
例如我们要创建不定参数数量的函数,最后一个参数是要执行的函数
var fn = function () {// 获取所有参数
var args = [].slice.call(arguments)
// 如果最后一个参数不是函数,则不继续执行下面的内容
var caller = args.pop()
if (typeof caller !== "function")
return
// 接下来是对所有参数进行操作
...
// 假设操作完了之后的变量数组仍为args,把这些变量置入要执行的函数中
caller.apply(this, args)
}
function pageAdd(expression, oldpage, page, func) {可行,不过需要点更改。
if (expression()) { // 表达式要执行
setTimeout(function() {
if (oldpage != page) {
oldpage = page // 这个赋值操作意义不大,因为变量的作用域只在这个pageAdd里,不会影响到顶层作用域里面的变量
func()
}
}, 250)
}
}
只需要在自定义的函数中添加参数就可以了,在函数调用的时候,传递一个参数就可以了。
无参数的自定义函数:function a(){alert (1)}
函数调用:
a() //弹出一个1
修改上面的函数,变成有参数的函数:
function a(n){alert (n)}
函数调用:
a(4) //弹出一个 4