javascript函数之arguments学习
来源:互联网 发布:当爱已成往事 知乎 编辑:程序博客网 时间:2024/05/21 17:36
javascript函数之arguments学习
js函数有两个特殊的对象,一个是this,另一个是arguments。
示例代码
function say(a1,a2,a3){ console.log(arguments);}say(1,2,3);
输出
(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
从上面输出内容可以看出,arguments类似一个数组,其实小的乍一看就是一个数组,但是书上说这是一个类数组对象,小的也没太搞明白什么意思,估计又能通过索引取值,又有内部方法吧。
arguments的主要用途是保存函数的所有参数
function say(a1,a2,a3){ console.log(arguments[0]) console.log(arguments[1]) console.log(arguments[2]) console.log(arguments[3]) } say(1,2,3);-------->输出:123undefined
因为在调用函数say时只传递了三个参数,所以我们最后稳稳地只取出了三个参数的值
当然,arguments保存的不是函数声明的参数,而是真正调用时所传递的参数。
function say(a1,a2){ console.log(arguments[0]) console.log(arguments[1]) console.log(arguments[2]) console.log(arguments[3])}say(1,2,3);-------->输出:123undefined
arguments.callee是函数本身
可能我的语义不准确,但是应该应该能够帮助同学们理解一二
示例
function say(a){ console.log(a) if (a>1) { arguments.callee(a-1); }}say(2);-------->输出:21
诶,这不就是递归吗?这有什么鸟用啊?
俗话说存在就有它的意义,下面我们来看这个示例,使用方法名递归
function say(a){ console.log(a) if (a>1) { say(a-1) } } newSay = say say = function (){ console.log('我变成了其他函数') } newSay(2) -------->输出: 2 我变成了其他函数
看到这里相信大家可以理解,在程序运行后看,say已经不指向原来的函数了,它变了。
所以,这个时候,我们的arguments.callee就能缓解这种尴尬了
function say(a){ console.log(a) if (a>1) { arguments.callee(a-1) } } newSay = say say = function (){ console.log('我变成了其他函数') } newSay(2) -------->输出: 2 1
阅读全文
0 0
- javascript函数之arguments学习
- javascript函数之arguments(2)
- JavaScript之学习arguments对象
- JavaScript-函数传参之arguments
- javascript函数arguments对象
- JavaScript-Arguments.callee 函数
- Javascript 学习 -- arguments
- Javascript 中的arguments 学习
- javascript之arguments详解
- javascript之arguments对象
- Javascript之arguments
- JavaScript之arguments
- 【学习-水滴石穿】 JavaScript用arguments对象访问函数的参数
- 轻松学习 JavaScript (4):函数中的 arguments 对象
- JavaScript函数中的arguments对象
- javascript函数参数数组arguments
- Javascript 函数中的arguments.callee
- javascript-arguments实现函数重载
- Lua笔记
- java中成员变量、局部变量、静态变量的区别
- 使用dropwizard(5)--加入swagger
- js添加行
- 二叉树最简单构成
- javascript函数之arguments学习
- Android Activity的launchMode四种启动模式备忘
- Ansible常见模块与使用方法
- PTA修理牧场
- 使用dropwizard(6)-国际化-easy-i18n
- Java枚举类
- Time.deltaTime 的含义用法
- JavaAPI编译转换接口CompilationTask的Call()方法翻译
- ICP算法(Iterative Closest Point迭代最近点算法)