ES6 笔记

ES6的功能真的是非常的强大,为了对其有一个更好的学习体会过程,就想把它做成渐进式的笔记,方便一起交流学习。

变量、常量

在ES5中我们使用 var  来声明一个变量,而新的ES6中加入了常量的声明,我们分别使用 let const 来声明变量和常量

var a = 1;   //ES5
let b = 2;   //ES6 变量
const c = 3;  //ES6 常量

在这里我们我们要注意两个名词 变量提升 暂时性死区

变量提升是ES5中的一个奇怪特性,未被声明的变量在使用时会被赋值为“undefined

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

暂时性死区是ES6中标我们要注意的一点,只要块级作用域内存在 let (const)命令,它所声明的变量(常量)就“绑定”这个区域,在使用 let (const)声明之前该变量都是不可用的,否则会报错

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

作用域

在ES5中我们只有 全局作用域 函数作用域 ,这就产生了很多不合理的情况,比如:用来计数的循环变量泄露为全局变量

var s = 'hello';

for (var i = 0; i < s.length; i++) {
  console.log(s[i]);
}

console.log(i); // 5

 

在ES6中使用 块作用域 就能更好的避免变量的泄露,并且以往在ES5中使用的立即执行函数将可以不再需要了

 

//立即执行表达式
(function () {
  var tmp = ...;
  ...
}());

// 块级作用域写法
{
  let tmp = ...;
  ...
}

箭头函数

再ES6中新增了箭头函数来定义一个函数,基本用法:

//ES5
function full () {
  var a = 1;
  ......
}
//ES6
const full = () => { let a = 1;}

匿名函数也可以写成如下:

() => {}

参数只有一个可以省略“()”,函数内表达式的值为返回值的情况,可以省略“{}”,如下:

//ES5
function full (v) {
  return v + 1;
}
//ES6
const full = v => v + 1;

默认参数

在ES6中新增了函数的默认参数设置,在参数检测上为我们提供了很好的便利,基本设置如下:

//ES5中需要使用变通的方法
function log(x, y) {
  y = y || 'World';
  console.log(x, y);
}
log('Hello')   // Hello World

//ES6
function log(x, y = 'World') {
  console.log(x, y);
}
log("Hello")   // Hello World 

同时,我们还可以利用这一功能做到必选参数的检测:

//ES6  
function required () {  
  return new Error("x is required !");  
}  
function log(x = required(), y = 'World') {  
  console.log(x, y);  
}  
log()   // x is required !</code> 

 

解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构

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

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些例子:

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3

let [ , , third] = ["foo", "bar", "baz"];
third // "baz"

let [x, , y] = [1, 2, 3];
x // 1
y // 3

let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]

let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []

ES6拥有强大的新特性以及功能,以上这些只不过是冰山一角,但学习的过程的循序渐进的,在实际使用中学习更易于我们掌握精髓。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值