arguments
arguments对象在函数体内自动可用,并且它是一个类似数组的对象(伪数组),包含了传递给函数的所有参数。
function useArguments(num) {
console.log(num)
console.log(arguments)
}
useArguments(1,2,3)
输出: 1
输出: { '0': 1, '1': 2, '2': 3, length: 3 } 或类似结构
1、arguments是伪数组,因此没有数组的方法。可以通过 Array.from(arguments)转换为真数组。
2、arguments是在函数体内隐式可用的,不需要声明。
3、arguments包含了函数调用时传入的所有参数。
4、arguments在箭头函数中不可用,箭头函数没有自己的arguments,但是会捕获其封闭执行上下文中的arguments(如果有的话)
5、如果形参有默认值,arguments自动进入严格模式‘use strict’,改变形参不影响arguments
function useArguments() {
console.log('一:'+Array.from(arguments))
const getArguments = () => {
console.log('二:'+Array.from(arguments))
}
getArguments()
}
useArguments(1,2,3)
输出: 一:[ 1, 2, 3 ]
输出: 二:[ 1, 2, 3 ]
剩余参数
剩余参数允许将一个不定数量的参数作为一个数组收集起来。
const useRestParameters = (num, ...rest) => {
console.log(num)
console.log(rest)
}
useRestParameters(1, 2, 3)
输出:1
输出:[ 2, 3 ]
1、剩余参数是真正的数组
2、剩余参数需要在函数参数中显示声明,使用…语法
3、剩余参数只收集那儿写没有对应形参的实参。如果形参与实参一一对应,那么剩余参数将是一个空数组。
4、剩余参数可以在箭头函数中使用,就像在任何其他函数中一样。