平常工作中由于不是主要做前端,经常忘记
es6
的一些内容,总是写代码的时候再去查,比较影响效率,这里把自己写代码中经常使用到的ES6
的一些特性做一下梳理,方便记忆和查阅。
简介
ES6
, 全称ECMAScript 6.0
,是 JavaScript 的下一个版本标准,2015.06 发版。
ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
一、let const
let
- 只在let命令所在的代码内有效
- 不存在变量提升
const
const
声明变量后无法改变(const
不是保证值不变,只是保证变量存储的内存地址不变)
二、解构赋值
方便了复杂对象中数据字段获取。
javascript
//数组结构
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
//对象结构
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
三、字符串拓展方法
javascript
includes():返回布尔值,判断是否找到参数字符串。
startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。
endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。
let string = "apple,banana,orange";
string.includes("banana"); // true
string.startsWith("apple"); // true
string.endsWith("apple"); // false
string.startsWith("banana",6) // true
四、对象
1、拓展运算符(...)
用于取出参数对象所有可遍历属性然后拷贝到当前对象。
2、Object.assign(target, source_1, ···)
用于将源对象的所有可枚举属性复制到目标对象中。
javascript
let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
Object.assign(target,object2,object3);
// 第一个参数是目标对象,后面的参数是源对象
target; // {a: 1, b: 2, c: 3
Object.is(value1, value2)
用来比较两个值是否严格相等,与(===)
基本类似。
五、箭头函数
箭头函数提供了一种更加简洁的函数书写方式。基本语法是:
javascript
var f = v => v;
//等价于
var f = function(a){
return a;
}
f(1); //1
箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。
javascript
function fn(){
setTimeout(()=>{
// 定义时,this 绑定的是 fn 中的 this 对象
console.log(this.a);
},0)
}
var a = 20;
// fn 的 this 对象为 {a: 19}
fn.call({a: 18}); // 18
六、export 与 import
基本用法
模块导入导出各种类型的变量,如字符串,数值,函数,类。
- 导出的函数声明与类声明必须要有名称(
export default
命令另外考虑)。 - 不仅能导出声明还能导出引用(例如函数)。
export
命令可以出现在模块的任何位置,但必需处于模块顶层。import
命令会提升到整个模块的头部,首先执行。