arguments的深入学习
arguments是一个 传递给函数的参数 的类数组(array-like)对象.
arguments的基本使用
function foo(num1, num2, num3) {
console.log(arguments);
console.log(arguments.length);
console.log(arguments[2]);
console.log(arguments.callee);
}
foo(1, 3, 3, 6, 8)
arguments转为数组(4种方式)
function foo(num1, num2, num3) {
var newArr1 = Array.prototype.slice.call(arguments)
console.log(newArr1);
var newArr2 = [].slice.call(arguments)
console.log(newArr2);
var newArr3 = Array.from(arguments)
console.log(newArr3);
var newArr4 = [...arguments]
console.log(newArr4);
}
foo(1, 3, 3, 6, 8)
Array中的slice()实现
Array.prototype.FhSlice = function(start, end) {
var arr = this
start = start || 0
end = end || arr.length
var newArr = []
for(var i = start; i < end; i++) {
newArr.push(arr[i])
}
return newArr
}
var newArr = [1,2,3,4].FhSlice(1, 3)
console.log(newArr);
箭头函数没有arguments
function foo() {
var bar = () => {
console.log(arguments)
}
return bar
}
var fn = foo(123)
fn()
var foo = (num1, num2, ...args) => {
console.log(args)
}
foo(10, 20, 30, 40, 50)