js回调函数怎样传递参数

JavaScript06

js回调函数怎样传递参数,第1张

<html>

<head>

<title>

jsp3

</title>

</head>

<body bgcolor="#ffffff">

<script language="javascript" type="text/javascript">

function A(a,callback){

var b=callback

alert(a+b)

}

function B(c){

return (-c)

}

</script>

<form method="post" action="jsp3.jsp">

<br><br>

<input type="button" name="Submit" value="Submit" onclick="A(4,B(3))">

</form>

</body>

</html>

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。也可以说回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。

PostUrl(URL, action, finterid, ftrantype, fuserid, fn,urls)

function PostUrl(URL, action, finterid, ftantypeid, fuserid, fn,urls) {

    fn(urls);

}

JavaScript 函数参数传递到底是值传递还是引用传递

一 参数

1 所有的参数传递,都是传递值的拷贝。(如果想知道为什么,去学习编译原理的函数调用的参数压栈和出栈对应内容)。

2 C传指针进去,其实也是把这个指针值按拷贝传送进去。但是因为指针值指向一块外部内存空间(其实更多是堆空间,或外层栈变量空间),所以感觉可以在函数里改变外部变量。其实本质还是按拷贝传递,只是传递进去的是一个访问变量的渠道。

因此,如果我们希望函数内能改变外部的指针值,往往传进去的是指针变量的指针。呵呵,很多初学C的程序员,对**非常难理解。

二 返回值

返回值是按拷贝传递,函数出栈后,会传出一个值,该值在调用函数的代码段的生命周期里一直有效。相当与调用点形成一个匿名的栈变量。

变量a = function() 而a并不等于函数里return的那个值。

其实function()执行结果自身就是一个匿名变量。(其实编译器会检查语法,如上面a=function这样的语法,匿名变量不会生成,直接使用a变量拷贝返回值)

例如: function()返回int值。 完全可以 int x = function() + 6//注意:+运算时,函数已经执行完毕,所有函数出栈操作已经结束。

很明显function()必须有一个变量或常量参与计算,而函数里return的值会随函数调用结束出栈而被删除,所以必须拷贝构造传递出来。