ES6之函数

函数默认值:

以前的函数默认值写法:

在函数当中,函数的参数默认是已经定义了的,已经不能再使用let或者const从新定义了

rest运算符 / 扩展运算符:

 

必须放到最后,不能放在中间

复制数组的方法:

箭头函数:

再看箭头函数中this的指向问题

这是正常的this指向,谁调用他,他的this就指向谁

下面加一个setTimeout

发现他就变成了undefined,这是因为this.id是通过setTimeout载入运行的,this.id属于window

箭头函数中的this指向,指向其在定义的时的作用域,而不是其运行时的作用域(原谁调用,this指向谁)

箭头函数中也没有arguments

如果想使用,就使用rset运算符

还有就是箭头函数不能当做构造函数,

ES6 封装函数有多种不同的形式,以下结合参考内容进行介绍: ### 设置默认值封装函数 ES6 允许为函数的参数设置默认值,直接写在参数定义的后面。例如封装一个 `log` 函数: ```javascript function log(x, y = 'World') { console.log(x, y); } log('Hello') // 输出: Hello World log('Hello', 'China') // 输出: Hello China log('Hello', '') // 输出: Hello ``` 这里 `y` 参数默认值为 `'World'`,当调用函数未传入 `y` 参数时,会使用默认值 [^1]。 ### Generator 函数封装 Generator 函数是一种特殊的函数,总是返回一个遍历器,这个遍历器是 Generator 函数的实例,也继承了 Generator 函数的 `prototype` 对象上的方法。例如: ```javascript function* g() {} g.prototype.hello = function () { return 'hi!'; }; let obj = g(); console.log(obj instanceof g); // 输出: true console.log(obj.hello()); // 输出: 'hi!' ``` 这里封装了一个 Generator 函数 `g`,并在其原型上添加了 `hello` 方法 [^2]。 ### 使用 Proxy 封装防抖、节流函数 可以使用 ES6 的 `Proxy` 来封装防抖和节流函数。以下是封装的防抖和节流函数示例: ```javascript // 通用防抖函数 export function debounce(fn, rate = 300, immediate = true) { let timer; return new Proxy(fn, { apply(target, ctx, args) { if (timer) { clearTimeout(timer); } if (immediate) { let callNow = !timer; timer = setTimeout(() => { timer = null; }, rate); if (callNow) { return Reflect.apply(target, ctx, args); } } else { timer = setTimeout(() => { return Reflect.apply(target, ctx, args); }, rate); } }, }); } // 通用节流函数 export function throttle(fn, rate = 1000) { let lastTime = 0; return new Proxy(fn, { apply(target, ctx, args) { const now = Date.now(); if (now - lastTime > rate) { lastTime = now; return Reflect.apply(target, ctx, args); } }, }); } ``` 在上述代码中,`debounce` 函数封装了防抖功能,`throttle` 函数封装了节流功能 [^3]。 ### 递归函数封装 在函数内部调用自己的函数称为递归函数。为了防止溢出,必须使用 `return`。例如封装一个求 `n` 的阶乘的递归函数: ```javascript function fn(n) { if (n <= 1) { return n; } else { return n * fn(n - 1); } } // 调用示例 let n = 5; console.log(n + '的阶乘为' + fn(n)); ``` 这里封装的 `fn` 函数通过递归的方式计算 `n` 的阶乘 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值