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

JavaScript037

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)的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

参数用于将数据传递到函数内部。当然,如果不用参数传递,在函数内部也可以访问外部的变量,那为什么还要参数呢?<br>1.封装:有了参数,函数内部就不用关心外部的东西,只负责自己处理自己的东西即可。<br>2.如果你使用参数,那么你在函数内部修改了参数的值,外部的值就不会受到影响,如果你直接操作函数外部的值,那可就危险了。(当然,不是所有参数的修改都不会被影响,如果是引用传递,那么外部的值会同时改变)。<br><br><script language="javascript"><br>function test(){<br>alert("hello")<br>}<br><br>function test(str){<br>alert(str)<br>}<br></script><br>前者是有参函数,后者是无参函数。