ES6之Function
2023-03-14 22:34:25 时间
- 默认参数,默认参数也可以结合解构赋值在进行默认值处理。(undefined or null 走默认参数)
- function.length:返回第一个默认参数前的形参个数。
- Rest参数:如果...在等号左边或者放在形参上,那么就是rest参数。如果...在等号右边或者放在实参上,那么就是扩展运算符。
- 扩展运算符。
- name属性:返回函数名称。匿名函数返回anonymous,bind绑定函数返回name多了一个关键字 bound xxx。
- 箭头函数。
- 箭头函数中this指向定义时所在的对象,而不是调用时所在的对象。
- 箭头函数不可以当作构造函数。
- 箭头函数不可以使用arguments对象。
// 默认参数
function foo(x, y = 'world') {
// undefined or null 才会走默认参数
console.log(x, y)
}
foo('hello', 0)
// 注意这段代码,先进行了默认参数,然后对于默认参数又进行了一次解构赋值
function ajax(url, {
body = '',
method = 'GET',
headers = {}
} = {}) {
console.log(method)
}
ajax('http://www.imooc.com', {
method: 'POST'
})
// function length 返回第一个默认参数前的形参个数
function foo(a, b = 1, c) {
console.log(foo.length)
}
foo('a', 'b') // 1
function foo(a = 2, b = 1, c) {
console.log(foo.length)
}
foo('a', 'b') // 0
// Rest参数 Rest为数组
function sum(...nums) {
let num = 0
nums.forEach(function (item) {
num += item * 1
})
return num
}
console.log(sum(1, 2, 3)) // 6
console.log(sum(1, 2, 3, 4)) // 10
function sum(base, ...nums) {
let num = base
nums.forEach(function (item) {
num += item * 1
})
return num
}
console.log(sum(30, 1, 2, 3)) // 36
console.log(sum(30, 1, 2, 3, 4)) // 40
// Spread Operator 和 Rest Parameter 是形似但相反意义的操作符, 简单的来说 Rest Parameter 是把不定的参数“ 收敛” 到数组, 而 Spread Operator 是把固定的数组内容“ 打散” 到对应的参数。 示例如下:
function sum(x = 1, y = 2, z = 3) {
return x + y + z
}
console.log(sum(...[4])) // 9
console.log(sum(...[4, 5])) // 12
console.log(sum(...[4, 5, 6])) // 15
// 函数的name属性
function foo() {}
foo.name // foo
(new Funciton()).name // anonymous
function foo() {
this.a = '6'
}
foo.bind({}).name // 多了一个关键字 bound foo
function () {}.bind({}).name // bound
// 箭头函数就不做演示了 太常规了吧
复制代码
相关文章
- 中国区CloudWatch Dashboard跨区域集成指标
- Wellforce 宣布将卫生系统的数字医疗保健生态系统迁移到 AWS
- 通过 Amazon Connect 与医生轻松沟通并简化患者的计费
- AWS 一周回顾 — 2022 年 8 月 8 日
- 借助AWS Secrets Manager管理特权凭证
- 基于Seedfarmer的云资源编排
- Python1_Python的工程目录结构
- 推荐系统系列之推荐系统召回阶段的深入探讨
- Graviton 快速启动 – 帮助您将工作负载迁移到 AWS Graviton 的全新计划
- 亚马逊云科技标签策略中国区替代方案
- 新增 – 使用基于用户的许可证模式在 Amazon EC2 上运行 Visual Studio 软件
- 跨 AWS 账号复制加密的 S3 对象
- 使用Pulumi打造自己的多云管理平台
- Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测
- AWS Global Accelerator 的新增功能 — 互联网协议版本 6(IPv6)支持
- Amazon Detective 支持 Amazon EKS 上的 Kubernetes 工作负载以进行安全调查
- 利用 Amazon Managed Blockchain 发展和扩大忠诚度奖励计划(第一部分)
- 通过 AWS Managed Microsoft Active Directory 运行混合 Active Directory 服务
- AWS 一周回顾 – 2022 年 7 月 25 日
- Alluxio on Amazon EMR 集成实践