ES6的一些新特性

来源:互联网 发布:七夕情人节html源码 编辑:程序博客网 时间:2024/05/01 11:41

ES6是ES5的最新一个版本,可以使用Google公司的Traceur编译器将ES6代码编译为ES5代码


let命令:

用于声明变量,类似于var,区别是声明的变量只在所属的代码块中有效,且let不会发生变量提升现象(function中使用var声明变量,无论在什么位置,都会提升到function顶部)

const命令:

用于声明常量,一旦声明,值是不可改变的(重新赋值会失败,但不会提示错误)


变量的解构赋值:

解构数组

var [a,b,c] = [1,2,3];等同于var a = 1;var b = 2;var c = 3;

解构变量

var {foo, bar} = {foo : 'aaa', bar : 'bbb'}

用途:可用于交换变量的值、函数返回多个值等


字符串相关扩展:

codePointAt方法(原先JS字符以UTF-16的格式存储,每个字符固定为2个字节,对于部分需要4个字节存储的字符,会被误认为是两个字符,ES6改善了这个问题),对应的方法是String.fromCodePoint(),用于从Unicode编号返回对应的字符串

repeat()方法,表示将原字符串重复N次,例子:"x".repeat(3) = xxx;


数值相关扩展:

ES6将parseInt()和parseFloat()改为Number.parseInt()和Number.parseFloat()

Number.isInteger()判断是否为整数(注意25.0也会返回true)


数组相关扩展:

Array.from()用于将类数组对象、可遍历的对象、ES6新增的Set和Map数据结构转换为真正的数组

Array.of()方法将一组值转换为数组,例子:Array.of(3,11,8) = [3,11,8]

find()和findIndex()方法用于找出第一个符合条件的数组

fill()填充数组,例子:['a','b','c'].fill(7) = [7,7,7]


对象相关扩展:

Object.is()比较两个值是否对等,类似===,不同之处是+0不等于-0,NaN等于NaN

另ES6增强了对象的写法,允许属性名是一个表达式


函数相关扩展:

允许参数设置默认值,例子:function a(x = 0, y = 0){}

箭头函数,例子:var f = () => 5表示var f = function (){return 5;}

var a = v => v表示var a = function(v){return v;}


Set和Map数据结构:

Set结构类似于数组,但其成员值是唯一的,没有重复值,例子:

var s = new Set([1,2,3,3,3]); //[1,2,3]

可以使用add()添加值、delete()删除值、has()返回布尔值检测是否存在、clear()清除所有成员(注意可以使用Array.from方法将该数据结构转换为数组)

Map结构(JS对象只能使用字符串作为键值,Map结构类似于对象,但是可以使用对象等作为键值类型)

var m = new Map();

m.set(a, "Hello"); //赋值

m.get(a); //取值

Map原生提供3个遍历器

keys()返回键名

values()返回键值

entries()返回所有成员

例子:for(let key of map.keys()){console.log(key);}


for...of遍历:

和for...in区别:for...in只可以获取键名,不能直接获取键值,for...of可以

可遍历数组、Set、Map等数据结构


添加了Promise对象表示将要发生的事件(异步操作)

添加了Class类的概念

实现了模块的功能,通过export关键字输出变量,在其它JS文件中通过import关键字加载这个模块(文件)

0 0
原创粉丝点击