JavaScript函数的增强知识(argument、纯函数)

43 篇文章 4 订阅

1.函数对象的属性

我们知道JavaScript中函数也是对象,那么对象中就可以有属性和方法

属性name:一个函数的名称我们可以通过name来访问;

function foo(){

}
console.log(foo.name) // foo

var bar = function(){
}
console.log(bar.name) // bar

属性length:属性length用于返回函数参数的个数:

rest参数是不参与参数的个数的;

var baz = (name, age, ...args) => {
}
console.log(baz.length)

2.认识arguments

arguments是一个对应于传递给函数的参数类数组对象

  • 但是它却拥有数组的一些特性,比如length,可以通过index索引来访问;
  • 它没有数组的一些方法,比如filter、map等。

arguments转Array

在开发中,我们经常需要将arguments转成Array,以便使用数组的一些特性。

常见的转化方式

1.遍历arguments,添加到一个新数组中。

var length = arguments.length
var arr = []
for (var i = 0; i < length; i++) {
    arr.push(arguments[i])
}
console.log(arr)

2.调用数组slice函数的call方法(少用)

var arr1 = Array.prototype.slice.call(arguments);
var arr2 = [].slice.call(arguments)

3.ES6的两个方法

Array.from

[...arguments]

const arr3 = Array.from(arguments)
const arr4 = [...arguments]

箭头函数不绑定arguments

箭头函数是不绑定arguments的,所以我们在箭头函数中使用arguments会去上层作用域查找

console.log(arguments)

var foo = (x, y, z) =>{
    console.log(arguments)
}

foo(10, 20, 30)
function bar (m, n){
    return (x, y, z) => {
    console.log(arguments)
 }
}

3.函数的剩余(rest)参数

ES6中引用了rest parameter,可以将不定数量的参数放进一个数组中

如果最后一个参数是...为前缀的,那么它会将剩余的参数放到该参数中,并且作为一个数组;

function foo(m, n, ...args){
    console.log(m, n)
    console.log(args)
}

那么剩余参数和arguments有什么区别呢?

剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参;

arguments对象不是一个真正的数组,而rest参数是一个真正的数组,可以进行数组的所有操作;

arguments是早期的ECMAScript中为了方便去获取所有的参数提供的一个数据结构,而rest参数是ES6中提供并且希望以此 来替代arguments的;

剩余参数必须放到最后一个位置,否则会报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至尊绝伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值