带你读书之“红宝书”:第十章 函数②

本文介绍了JavaScript中函数参数的灵活性,包括参数数量不匹配仍可执行、arguments对象的使用及其特性,如作为类数组对象和可迭代对象。讨论了在严格模式下和箭头函数中arguments对象的变化,并探讨了命名参数与arguments的关系以及如何在不同场景下使用。通过实例解析,帮助读者更好地理解和应用这些概念。
摘要由CSDN通过智能技术生成

「这是我参与2022首次更文挑战的第33天,活动详情查看:2022首次更文挑战

写在前头

大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。

注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。

思维导图

image.png

简述

函数这一章其实在有一定的编程基础,比如学过一点c语言就很好读下去。整体还是易读板块。

10.3理解参数

image.png

  • 与其他语言的参数的不同

    参数真实传入个数和定义函数时要接受的个数不一定要严格一样。

  • 原因

    传入的参数是以一个数组方式来存储的,不在乎这个“数组”里面是否是空或者是元素“溢出”。并且根本不存在验证命名参数的机制。

  • arguments对象

①怎么访问

使用 function 关键字定义(非箭头)函数时,可以在函数内部访问 arguments 对象,从中取得传进来的每个参数值。

②是什么

arguments 对象是:

  • 一个类数组对像。

  • 一个可迭代对象。

③length属性

arguments像数组一样有length属性,可以用来检测arguments里面有多少个参数。

④和命名参数一起使用


function doAdd(num1, num2) {
    if (arguments.length === 1) {
      console.log(num1 + 10);
    } else if (arguments.length === 2) {
    console.log(arguments[0] + num2);
     }
}

⑤与命名参数值同步

可以使用类似数组的操作方式将参数赋值。

    function doAdd(num1, num2) {
    arguments[1] = 10;
    console.log(arguments[0] + num2);
    }
  • 参数怎么写

①不同

ECMAScript 函数的参数只是为了方便才写出来的,并不是必须写出来的。

在ECMAScript 中的命名参数不会创建让之后的调用必须匹配的函数签名。

②原因

根本不存在验证命名参数的机制。

  • arguments对象与命名参数

①使用

arguments 对象可以跟命名参数一起使用,参数就是arguments“数组”里面的每一个元素的“名字”。可以一起使用。

②值同步

就把arguments看做一个数组,那么第一个参数对应arguments[0]。2个的值一直一样。

③严格模式

无法可以使用类似数组的操作方式将参数赋值。就是参数传入时是什么值,就无法后面改变。

④命名参数未传入

对于命名参数而言,如果调用函数时没有传这个参数,那么它的值就是 undefined。

  • 箭头函数中的参数

①不使用arguments对象

参数将不能使用 arguments 关键字访问,而只能通过定义的命名参数访问。

②包装函数

在一个包装函数中创建一个箭头函数,可以在箭头函数里面使用这个包装函数的arguments对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值