把参数写在括号里面 就可以了
var a=1var b=2
var c= myaddfun(a,b)
alert(c)
function my addfun(a,b){ //注意 这里的 a 和b
// 和上表面的a和b 无关 可以用任何合法的变量名 如C和D
return a+b
}
functions myaddfun(c,d){ // 用c和d也是一样, 只跟次序有关系
return c+d
}
JS求值策略有诸多争议和不同版本。对于这个问题的答案:“JS中基本类型是按值传递的,对象类型是按共享传递的。”共享传递解释为:(callbysharing,也叫按对象传递、按对象共享传递)。最早由BarbaraLiskov.在1974年的GLU语言中提出。该求值策略被用于Python、Java、Ruby、JS等多种语言。你可以自己写个demo运行下结果就知道。var a = 1function foo(x) {x = 2}foo(a)console.log(a)// 仍为1, 未受x = 2赋值所影响var obj = {x : 1}function foo(o) {o.x = 3}foo(obj)console.log(obj.x)// 3, 被修改了!无办法直接做到这一点,不过可以采用其他方法实现,例如:首先,定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递了。看如下所示:void subfunc (char *fmt, va_list argp)
{
...
arg = va_arg (fmt, argp)/* 从argp中逐一取出所要的参数 */
...
}
void mainfunc (char *fmt, ...)
{
va_list argp
va_start (argp, fmt)/* 将可变长参数转换为va_list */
subfunc (fmt, argp)/* 将va_list传递给子函数 */
va_end (argp)
...
}
这样就OK了!