js参数是一个函数怎么做?

JavaScript014

js参数是一个函数怎么做?,第1张

在函数中,是可以使用函数名作为另一个函数的参数的,执行时相当于是对此函数的一次引用。

例如我们要创建不定参数数量的函数,最后一个参数是要执行的函数

var fn = function () {

    // 获取所有参数

    var args = [].slice.call(arguments)

    

    // 如果最后一个参数不是函数,则不继续执行下面的内容

    var caller = args.pop()

    if (typeof caller !== "function")

        return

    

    // 接下来是对所有参数进行操作

    ...

    

    // 假设操作完了之后的变量数组仍为args,把这些变量置入要执行的函数中

    caller.apply(this, args)

}

JS函数的参数在function内可以用arguments对象来获取。

参数的调用有两种方式:

1、期望参数的使用。

2、实际传递参数的使用。

应用举例:

function

Test(a,

b){

var

i,

s

=

"Test函数有"

var

numargs

=

arguments.length

//

获取实际被传递参数的数值。

var

expargs

=

Test.length

//

获取期望参数的数值,函数定义时的预期参数个数(有a和b

2个参数)。

s

+=

(expargs

+

"个参数。")

s

+=

"\n\n"

for

(i

=0

i

<

numargs

i++){

//

获取参数内容。

s

+=

"

第"

+

i

+

"个参数是:"

+

arguments[i]

+

"\n"

}

return(s)

//

返回参数列表。

}

alert(Test('param1','second

param','第三个参数'))

需要注意的是:

arguments是一个object对象,它不是数组,不能对它使用shift、push、join等方法。

上述举例时用的arguments[i]中的i只是作为arguments对象的属性,并不能理解为数组下标。

代码演示

<html>

<head>

<script

language="javascript">

function

reloadList(){

if(typeof

arguments[0]

==

"function"){

arguments[0].call(this)

arguments[0]()

}

if(typeof

arguments[0]

==

"string")

alert(arguments[0])

if(typeof

arguments[0]

==

"number")

alert(arguments[0])

if(typeof

arguments[0]

==

"undefined")

alert(arguments[0])

if(typeof

arguments[0]

==

"boolean")

alert(arguments[0])

if(typeof

arguments[0]

==

"null")

alert(arguments[0])

}

reloadList(function(){})

</script>

</head>

<body>

</body>

以上这篇深入理解JS函数的参数(arguments)的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

你好,这个是可以的,默认的话,程序会自己处理的,因为showPosition可以通过引用来找到,返回的这个方法中最好用try-catch包住,以免出错!!

O(∩_∩)O~温馨提示O(∩_∩)O~

真心希望你能采纳我的回答,如有不明白,可以继续追问,若满意,记得及时采纳。