长沙培训网站制作百度怎么投放广告
加油 !! 💕
文章目录
- 前言
- 一、arguments
- 二、arguments转成array
- 三、箭头函数不绑定arguments
- 四、剩余参数 ...
前言
其实在es6之后不推荐使用 arguments , 建议使用剩余参数
一、arguments
- arguments 是一个 对应于
传递给函数的参数
的类数组(array-like)对象
。
function foo(x, y, z) {console.log(arguments);// [arguments] {'0':10, '1':20, '2':30}}foo(10, 20, 30);
- array-like意味着它不是一个数组类型,而是一个对象类型:但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;但是它却没有数组的一些方法,比如forEach、map等
二、arguments转成array
function foo(x, y, z) {console.log(arguments);// 方式一: es6var arr = Array.from(arguments);var arr2 = [...arguments];// 方式二: es5var arr3 = Array.prototype.slice.call(arguments);var arr4 = [].slice.call(arguments);// 方式三:自定义var length = arguments.length;var arr5 = [];for (var i = 0; i < length; i++) {arr5.push(arguments[i]);}}foo(10, 20, 30);
三、箭头函数不绑定arguments
- 箭头函数是不绑定 arguments 的,所以我们在箭头函数中使用arguments会去上层作用域查找!
- 在 浏览器里 是没有 arguments 的,但是在node里是有的(因为在node里一个js文件会被当成一个模块,这个模块会被包裹在一个函数里面,函数通过 .call 的方式,call({},kdfkdfj,dfjalfj ),除第一个参数都当作剩余参数)
四、剩余参数 …
- 上个点里我们说,箭头函数不能绑定 aeguments ,我们可以使用
剩余函数
var foo = (num1,...args)=>{console.log(arguments) // 不存在console.log(args)}