深入理解JS函数的参数(arguments)的使用

深入理解JS函数的参数(arguments)的使用,第1张

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并未被改变,这个是关键所在

查看原帖>>

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/12172222.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存