关于arguments,可以看看下面
函数1
![](https://box.kancloud.cn/734ffe6e79824f9aa72bff6f4434462c_595x191.png)
函数2
![](https://box.kancloud.cn/0f426ddbcd7529f7d4fb9610f6f29bd1_406x179.png)
第二个函数中没有形参,直接以agrguments[0]的方式获取了参数,,这里函数的agrguments并不是一个数组,虽然用起来是数组,他是一个对象,类数组,有自己的lengths属性,不过需要注意的是 ****函数名.lengths不等同于agrguments.lengths****, 第一个是在函数创建的时候就确定了的,但是第二个是实际的个数是实际的个数。
另外,不要乱用arguments,因为非常的影响可读性。
不过既然出现了肯定是有他存在的理由的,arguments适合创建动态函数的场景,如下例子:
~~~
/*
* 创建一个函数 announce, 需要完成以下要求:
* 1、函数可接受不定数目的参数
* 2、拼接所有参数成一句完整的字符串
* 3、最终通过 console.log 输出拼接好的字符串
*/
function announce(){
var length = arguments.length;
var i=0;
// var str=new String();
var str ='获得本次大会第一名的共有'+length+'人,分别是'
if(length){
for(;i<length-1;i++){
str =str+ arguments[i]+'、';
}
return str+arguments[length-1]+'。'
}
}
var resultStr = announce('Tom', 'Jack', 'Mike');
console.log(resultStr);
~~~
在这个函数中我们不知道会有在实际使用的时候会传入多少参数进来,所以我们可以使用遍历arguments的个数。
- 以专业工程师的标准要求自己
- JS
- 函数的this
- 函数的argument
- 函数的apply、bind、call方法
- 创建对象
- 构造函数创建对象
- 原型结合构造函数创建对象
- 原型
- 继承
- 闭包
- 正则表达式
- Ajax
- 设计模式
- ES6
- es6的模块化
- 定义变量的新方式
- 函数扩展
- 数组扩展
- 性能与工程化
- 关于http与缓存
- 重排(reflow、layout)与重绘
- 页面性能
- gulp
- webpack
- 一些项目回顾总结
- 移动端&微信H5游戏
- 微信小程序
- Vue.js
- 随手记录
- 如何通过前端技能获取2018世界杯门票
- jsonp
- es6 javascript对象方法Object.assign()
- 一份不错的基础面试题
- vscode常用插件
- koroFileHeader
- 构建自己的Js工具库
- H5 game
- Phaser从入坑到放弃再入坑
- 1.游戏的创建
- 2.资源的加载
- 3.phaser中的舞台,世界和摄像机
- 4.游戏缩放控制,移动端的适配
- 5.phaser中的显示对象
- 1.概述
- 2.phaser中的图片,图形,和按钮
- 3.phaser中的精灵
- 4.文字
- 5.组
- 6.phaser中的动画
- 7.粒子和瓦片地图
- 8.瓦片地图
- lodash
- ES5 to ESNext — here’s every feature added to JavaScript since 2015
- 防抖(debounce) 和 节流(throttling)