前言

语言学习看文档是非常无聊的,所以找来视频来学,并做了笔记。

模板语法

当返回一串比较复杂的字符串时,优先使用模板语法:

`${var1}, ${var2}`;

优点:模板所见即所得,即不需要敲换行、空格等占位符。

解构和扩展运算符

一切可迭代的数据类型(数组、对象等)都可以解构。解构出的是子元素。扩展运算府(三个点)也是将子元素拿出来放到一个新数据里。他们两个容易弄混:

解构:
let income = [10, 20, 30];
let [a,b,c]=income //a=10,b=20,c=30

扩展运算符:
let x=[...income] //x=[10,20,30]

看出差别了吧,解构是为了把数据取出来赋值给分散的新变量,而扩展运算符是把数据取出来包裹起来作为整体赋给一个变量。

对象字面量

如果对象的属性是从之前声明的变量获得的,那么在创建变量时,可以直接用变量来进行声明,而不需要写完整的键值对:

let name, age;
(name = "jason"), (age = 18);
let user = {
  name,
  age,
};

剩余操作符

“Rest operator” 可以翻译为 “剩余操作符” 或者 “剩余参数”。在 JavaScript 中,这个概念指的是使用三个点符号(…)来收集函数中的剩余参数,将它们组合成一个数组。

举个例子,假设有一个函数用来计算总和:

function sum(...numbers) {
  return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3, 4)); // 输出 10

let const

let/const 一直是 ES6 经久不衰的一个重要知识点。首先必须要知道,他俩为什么要发明出来取代 var。因为 var 有一个让人非常不爽的特点:变量提升。这是一个十分臭名昭著的特性,给 JavaScript 代码带来了很多 bug。所以 let、const 被提出,他俩就非常老实,只在自己的块级作用域内生效。也许 javascript 一开始就本该如此,谁知道创始人发了什么疯呢。

export import

见之前博文:javascript 模块系统

Class

见之前博文:面向对象编程及其在 javascript 中的实现

async/await promise

见之前博文:同步异步任务在 javascript 中的实现