CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • CSS3浮动定位与背景样式

  • CSS动画

  • JS基础语法与表达式

  • 流程控制语句与数组

  • JS函数与DOM

  • 面向对象

  • 正则表达式

  • ES6基础入门

    • 01-初识ES6
    • 02-模板字符串和箭头函数
    • 03-解构赋值
    • 04-对象字面量的增强与函数参数的默认值
      • 回顾对象字面量
      • 属性和方法的简洁表示法
      • 方括号语法
      • 函数参数的默认值是什么
      • 函数参数默认值的注意事项
  • ES6语法扩展

  • Promise与Class

  • Module与Babel

  • 前端
  • ES6基础入门
CodeAshen
2023-02-10
目录

04-对象字面量的增强与函数参数的默认值

# 对象字面量的增强

# 回顾对象字面量

介绍内容前先回顾下什么是对象字面量。

我们创建一个对象时,可以通过实例化构造函数生成。

// 实例化构造函数生成对象
const person = new Object();
person.age = 18;
person.speak = function () {};
1
2
3
4

而更常用的是通过字面量直接生成对象。

// 对象字面量
const person = {
  age: 18,
  speak: function () {}
};
1
2
3
4
5

对象字面量的方式更简洁直观,其实它还可以进一步简化。

# 属性和方法的简洁表示法

(1)属性的简洁表示法

键名和变量或常量名一样的时候,可以只写一个。

const age = 18;
const person = {
  // age: age
  age
};

console.log(person);
1
2
3
4
5
6
7

(2)方法的简洁表示法

方法可以省略冒号和 function 关键字。

const person = {
  // speak: function () {}
  speak() {}
};

console.log(person);
1
2
3
4
5
6

# 方括号语法

方括号语法的用法

const prop = 'age';
const person = {};

// person.prop = 18;  // 得到 {prop: 18}
person[prop] = 18;    // 得到 {age: 18}

// 方括号语法可以写在对象字面量中
const person2 = {
  [prop]: 18
};
1
2
3
4
5
6
7
8
9
10

方括号中可以放什么

  • 模板字符串,${}
  • 值或通过计算可以得到值的(表达式)
const prop = 'age';
const func = () => 'age2';
const person = {
  [prop]: 18
  [func()]: 18
  ['sex']: 'male'
  ['na' + 'me']: 'alex'
};
console.log(person);
1
2
3
4
5
6
7
8
9

方括号语法和点语法的区别:

  • 点语法是方括号语法的特殊形式
  • 当你的属性或方法名是合法标识符时,可以使用点语法,其他情况下要使用方括号语法

# 函数参数的默认值

# 函数参数的默认值是什么

调用函数的时候传参了,就用传递的参数;如果没传参,就用默认值。

const multiply = (x, y = 10) => x * y;

let res1 = multiply(2);  // 20 
1
2
3

# 函数参数默认值的注意事项

不传参数,或者明确的传递 undefined 作为参数,默认值才会生效。

const multiply = (x, y = 10) => x * y;

let res1 = multiply(2);  // 20 
let res2 = multiply(2, undefined);  // 20 
1
2
3
4

如果默认值是表达式,默认值表达式是惰性求值的。

另外还有个小技巧,函数参数的默认值最好从参数列表的右边开始设置,因为这样可以通过不传参数来实现取默认值。

const multiply = (x = 10, y) => x * y;

// 这种情况要让 x 走默认值,必须显示传 undefined
let res = multiply(undefined, 2);
1
2
3
4
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19
03-解构赋值
01-剩余参数与展开运算符

← 03-解构赋值 01-剩余参数与展开运算符→

最近更新
01
第01章-RabbitMQ导学
02-10
02
第02章-入门RabbitMQ核心概念
02-10
03
第03章-RabbitMQ高级特性
02-10
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式