Javascript中arguments和arguments.callee的区别浅析
深入理解JavaScript中的arguments与arguments.callee:一个实例
在JavaScript中,当我们谈论函数参数时,经常会遇到两个关键概念:arguments和arguments.callee。虽然这两个词都与函数和参数有关,但它们之间有着重要的区别。下面通过一个简单的实例来深入理解它们的差异。
让我们看下面的代码段:
```javascript
function check(args){
var ac = args.length; // 传入函数的参数个数
var ex = args.callee.length; // 函数本身定义的参数个数
document.write("ac:" + ac + '
'); // 输出传入参数个数
document.write("ex:" + ex + '
'); // 输出函数定义的参数个数
if (ac != ex) { // 如果参数数量不匹配
document.write("wrong number of arguments: expected: " + ex + "; actually passed " + ac + '
'); // 输出警告信息
}
}
function f(x, y, z) { // 定义了一个函数f,有三个参数
check(arguments); // 使用check函数检查传入的参数数量是否与函数f定义的参数数量一致
document.write(x + y + z); // 输出三个参数的和
}
```
这段代码定义了两个函数:check和f。函数f有三个参数,但在调用时,我们只传递了两个参数(例如:f(1,2))。这意味着传入的参数数量与函数f定义的参数数量不匹配。那么,这时候arguments和arguments.callee的作用就体现出来了。
在JavaScript中,arguments是一个类似数组的对象,代表着传给函数的所有参数。无论函数定义了多少个参数,都可以通过arguments来访问所有传入的参数。在这个例子中,args.length返回的是2,因为我们在调用函数f时只传递了两个参数。
而arguments.callee则是指向当前正在执行的函数对象。在这个例子中,args.callee就是指向函数f。通过args.callee.length,我们可以获取到函数f定义的参数个数,也就是3。
通过这个例子,我们可以看到,arguments主要用于获取所有传入的参数,而arguments.callee则用于获取函数本身的定义信息。在实际开发中,我们可以利用这两个特性来实现一些特定的功能,比如参数校验、动态函数调用等。
编程语言
- Javascript中arguments和arguments.callee的区别浅析
- 让div运动起来 js实现缓动效果
- php的扩展写法总结
- JavaScript中判断函数、变量是否存在
- PHP使用内置dir类实现目录遍历删除
- ionic开发中点击input时键盘自动弹出
- vue项目刷新当前页面的三种方法
- PHP正在进行时-变量详解及字符串动态插入变量
- EasyUI 结合JS导出Excel文件的实现方法
- 解决JS无法调用Controller问题的方法
- 如何利用JQuery实现从底部回到顶部的功能
- php遍历目录方法小结
- jQuery实现带延迟效果的滑动菜单代码
- EditPlus中的正则表达式实战(5)
- js+canvas实现动态吃豆人效果
- Symfony实现行为和模板中取得request参数的方法