ES6 — 部分语法笔记

ES6 — 部分语法笔记


纪录一下关于接触过的部分ES6语法:

1.解构赋值
ES6中,解构赋值可以写成以下结构:

let [a, b, c] = [1, 2, 3];

按照之前的写法,要写成以下结构:

let a = 1;
let b = 2;
let c = 3;

对比上面两个代码段,可以看出,解构赋值极大程度的简化了代码量,就像是一个压缩包,将原本零散的数据打包在一起,以一一对应的方式呈现。解构赋值除了完全解构数据之外,还支持部分解构:

let [a,, c] = [1, 2, 3];

上面代码中表示:a = 1 ,c = 3 ,因为 c 前面有两个逗号,相当于 a = 1 , = 2,c = 3 ,这样也属于一一对应,程序不会报错,但只有 a 和 c 会被解构。

除了解构之外,还可以再数据被机构之前,先给它一个默认值:

let [a ,b = 4, c] = [1, 2, 3];
let [a ,b = 4, c] = [1, undefined, 3];

上面代码第一条语句中,在解构之前,给了 b 一个默认值 4,但在解构之后,b 的值就改变了,b = 2,由此可见,如果右边有对应值,那么左边的默认值就会被取代。
再看第二条语句,同样在解构之前,给了 b 一个默认值 4,而在解构之后,b 的值还是 2,并没有发生改变。这是因为,右边 b 对应的值是 undefined。在解构赋值时,如果右侧对应的值是 undefined 且左侧对应的变量带有默认值,那么左侧变量的值仍然是它自带的默认值。
这是一种特殊情况,只有右侧是 undefined 的时候,默认值才会生效。

2.let 命令
ES6 中,let 命令 和 var 有些类似,但 let 弥补了 var 的一个很大缺陷。

for (let i = 0; i < 10; i++) {
// ...
}

console.log(i);

let 命令只在它所在的代码块生效,上面这段代码就会报错,因为 let 只在它所在的代码块生效,也就是说,从大括号结束处开始,i 就不在生效了,那么下面的 console.log(i); 自然就会出现问题。
再看下面这段代码:

console.log(foo); 
var foo = 2;

console.log(bar); 
let bar = 2;

这段代码中,同样是变量在生命前使用,用 var 声明时会发生变量提升,即变量已声明,但没有值。
let 则表示为在声明之前,变量是不存在的。
let 命令表达了逻辑性更强一点。
let 命令是不允许在相同的作用域内,多次声明同一个变量的:

function func() {
  let a = 10;
  var a = 1;
}

function func() {
  let a = 10;
  let a = 1;
}

所以,以上两种写法都会报错。
3.const 命令
const 通常是声明一个常量,但这个常量一旦声明了,就不能再改变了。

const PI = 3.1415;
PI // 3.1415

PI = 3;

上面代码中,在声明常量 const PI = 3.1415;之后,又给 PI 赋了一次值,所以直接就会报错。
同样,用 const 声明一个常量时,必须马上给它初始化,如果留在以后赋值,也会报错。
4.Set 数据结构
Set 类似于数组,但不同的是,Set里面没有相同的值,每一个成员的值都是唯一的。

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));

for (let i of s) {
console.log(i);
}
// 2 3 5 4

上面的 add()方法向 Set 中添加数据,但输出的时候,会发现并没有输出原数组中重复的值,这就说明,在添加的时候,Set 已经过滤了重复的值。

以上是ES6 中的4 种比较常用的基本语法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值