写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
简述
函数这一章其实在有一定的编程基础,比如学过一点c语言就很好读下去。整体还是易读板块。
10.3理解参数
- 与其他语言的参数的不同
参数真实传入个数和定义函数时要接受的个数不一定要严格一样。 - 原因
传入的参数是以一个数组方式来存储的,不在乎这个“数组”里面是否是空或者是元素“溢出”。并且根本不存在验证命名参数的机制。 - 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对象。