
JS函数的参数在function内可以用arguments对象来获取。
参数的调用有两种方式:
1、期望参数的使用。
2、实际传递参数的使用。
应用举例:
function
Test(a,
b){
var
i,
s
=
"Test函数有";
var
numargs
=
argumentslength;
//
获取实际被传递参数的数值。
var
expargs
=
Testlength;
//
获取期望参数的数值,函数定义时的预期参数个数(有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)的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。用typeof(var) 来返回一个数据类型
返回的可能值有
'undefined' - 如果变量是 Undefined 类型的
'boolean' - 如果变量是 Boolean 类型的
'number' - 如果变量是 Number 类型的
'string' - 如果变量是 String 类型的
'object' - 如果变量是一种引用类型或 Null 类型的
if(typeof(123)=='number')alert('this is a number')
以此类推非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
var
a=10;
function
f1(a)
{
alert(a);
a
=
1;//修改形参a
alert(1
===
a);
alert(1
===
arguments[0]);
}
f1(a);
alert(":"+a);首先你要知道函数内部有自己的作用域,在函数内部申明的变量只在函数内部才可见然后再看你这个问题,首先你申明了a=10这么一个全局变量,然后把a作为参数传入f1这个函数内部,其实问题就在这里了如果你不把a作为参数传入f1这个函数,你可以看到全局变量的值已经被从10改变为了1,这是因为函数内部未用var申明的变量就是全局变量作用域也是全局,所以全局变量a的值会被函数f1改变那为什么把a作为参数传入f1这个函数后,a这个全局变量的值没有被改变呢?我想机制是这样的,当你把a作为参数传入函数内部时,函数会把这个参数作为函数内部的局部变量,也相当于一个申明为局部变量的过程,所以即便你在f1内部用“a
=
1”给a重新赋值,也仅仅改变的这个局部变量a的值,全局变量的值仍然是10并未被改变,这个是关键所在
查看原帖>>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)