闭包?

fuyou001 2008-05-22 08:27:29
//依据参数列表来严格地检查一个变量列表的类型
function strict( types, args ) {
//确保参数的数目和类型核匹配
if ( types.length != args.length ) {
//如果长度不匹配,则抛出异常
throw "Invalid number of arguments. Expected " + types.length +
", received " + args.length + " instead.";
}
//遍历每一个参数,检查基类型
for ( var i = 0; i < args.length; i++ ) {
//如JavaScript某一项类型不匹配,则抛出异常
if ( args[i].constructor != types[i] ) {
throw "Invalid argument type. Expected " +
types[i].name +", received " +
args[i].constructor.name + " instead.";
}
}
}
//用来打印出用户列表的一个简单函数
function userList( prefix, num, users ) {
//确保prefix是一个字符串,num是一个数字,
//且user是一个数组
strict( [ String, Number, Array ], arguments ); //这里的arguments值是从哪传来的?

//循环处理num个用户
for ( var i = 0; i < num; i++ ) {
//显示一个用户的信息
print( prefix + ": " + users[i] );

function userList( prefix, num, users ) {
//确保prefix是一个字符串,num是一个数字,
//且user是一个数组
strict( [ String, Number, Array ], arguments ); //这里的arguments值是从哪传来的?
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuyou001 2008-05-22
  • 打赏
  • 举报
回复
明白了,arguments存储了所有传来的参数!上面测试结果是:5 2
Go 旅城通票 2008-05-22
  • 打赏
  • 举报
回复
function userList( prefix, num, users ) {
//确保prefix是一个字符串,num是一个数字,
//且user是一个数组
strict( [ String, Number, Array ], arguments ); //这里的arguments值是从哪传来的?


arguments就是传入当前函数的所有参数的集合
  • 打赏
  • 举报
回复
js语言是一解释性语言,它的运行状态和代码定义状态是有区别的,比如我定义了一个函数func(arg1,agr2)
可以接受两个参数,但运行是可能用户输入了三个参数过来。arguments是函数运行时编译器自动为函数分配
的数据,存储了用户实际输入的参数,是一个类似数组的结构,每一函数在运行是都会有一arguments,你可以用
下面的代码测试一下
function myfunc(arg1,arg2){
alert(arguments.length);
alert(arguments[1]);
}
myfunc(1,2,3,4,5);
fuyou001 2008-05-22
  • 打赏
  • 举报
回复
//依据参数列表来严格地检查一个变量列表的类型 
function strict( types, args ) {
//确保参数的数目和类型核匹配
if ( types.length != args.length ) {
//如果长度不匹配,则抛出异常
throw "Invalid number of arguments. Expected " + types.length +
", received " + args.length + " instead.";
}
//遍历每一个参数,检查基类型
for ( var i = 0; i < args.length; i++ ) {
//如JavaScript某一项类型不匹配,则抛出异常
if ( args[i].constructor != types[i] ) {
throw "Invalid argument type. Expected " +
types[i].name +", received " +
args[i].constructor.name + " instead.";
}
}
}
//用来打印出用户列表的一个简单函数
function userList( prefix, num, users ) {
//确保prefix是一个字符串,num是一个数字,
//且user是一个数组
strict( [ String, Number, Array ], arguments ); //这里的arguments值是从哪传来的?

//循环处理num个用户
for ( var i = 0; i < num; i++ ) {
//显示一个用户的信息
print( prefix + ": " + users[i] );

function userList( prefix, num, users ) {
//确保prefix是一个字符串,num是一个数字,
//且user是一个数组
strict( [ String, Number, Array ], arguments ); //这里的arguments值是从哪传来的?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧