ES6新特性一

ECMAScript6.0简称ES6,是javascript的下一代标准,它的主要内容是对JS的语法做一些更新或引入一些新的特性。你可以把ES6理解为继ES5之后的所有版本的覆盖,因为国际标准化组织ECMA每年都会对javascript做出一些修订,ES6就是对javascript下一代标准的统一。

let和const的用法

let

我们知道传统定义变量的var,在做循环或者判断的时候会造成变量提升,这样其实是不符合逻辑的,因为变量还没有被定义,而我在代码块以外就能得到值。

for(var i=0;i

}

最典型就是for循环的i,如果使用let就可以避免这些问题。

const

const定义的变量其实不叫‘变量’,你可以把他理解为无法修改的变量,它一般用来储存一些你不想别人修改的常量,避免重复定义造成修改。

const a=3.1415;

a=20;

这个时候程序就会报错,告诉你这个a是无法修改的。

数组式赋值变量

数值式赋值变量,是根据数组的顺序以及结构来赋值,顺序一定不能弄错。

数组赋值方式=>

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

你也可以设置变量的默认值=>

let [a=4,b]=[undefined,2];//a=4 b=2

结构复杂的数组=>

let [a=4,b,[c,[d]]]=[undefined,2,[5,[6]]];//a=4 b=2 c=5 d=6

对象式赋值变量

对象赋值变量跟数组不同,对象赋值是根据对象的键名来赋值,赋值的顺序可以打乱,键盘如果不存在就会赋值为undefined,但是键名也是可以在赋值的时候重命名。

对象的赋值方式=>

let =;//name=job age=18

重命名键名赋值方式=>

let =;//fname=job age=18

对象赋值也可以设置默认值=>

let =;//name=job age=20

对象与数组的结合赋值=>

let =;//name=age a=18 b=20 c=25

字符串式赋值变量

字符串赋值跟数组一样,也是顺序化赋值给每一个对应数组的值,如果对应的值则会赋值为undefined。

let [a,b,c,d,f,g]='world';//a=w b=o c=r d=l f=d g=undefined

函数传参对象化

把函数的参数对象化,这样不仅传参的时候可以打乱顺序,而且还可以设置默认值,这样有利于更好的面向对象编程。

let obj={

url:'localhost:8080/user',

data:,

asy:55

};

function test(}){

console.log(url);

console.log(name);

console.log(age);

}

test(obj);

//输出

localhost:8080/user

job

18

ES6提供的模板引擎

基本上简化了JS以前的html模板写法,去掉了复杂的引号和加号的写法,对数据的插入也做了封装,基本上是更加完美了。

let [name,age]=['徐会长',18];

let mod=`

$

$

console.log(mod);

//输出

徐会长

18

Proxy()代理

proxy的主要功能是操作对象,可以把它理解为对象的代理。

let user=new Proxy({},{

get:function(obj,key){

if(key=='name')

return obj.fname+' '+obj.lname;

},

})

user.fname='job';

user.lname='fell';

user.fage=18;

user.lage=30;

console.log(user.name);//输出 job fell

Set()数据结构

Set是ES6引入的一种新的数据结构,能把数组和对象里重复的数据都删除,只保留不同的数据。

let s=new Set([1,2,3,4,4,4,]);

console.log(s);

//Set { 1, 2, 3, 4, { name: 'tom', age: 18 } }

Set()的一些方法=>

s.size; //求出数据的长度

s.add(5); //向其末尾追加数据‘5’

s.delete(5); //删除数据‘5’

s.has(4); //检查是否包含数据‘4’返回true或false

s.clear(); //清空Set数据

ES6全新的字符串检测方式

includes():用于检测字符串是否包含检索内容,返回true或false。

console.log('hello world'.includes('r'));//true

startsWith():用于检测字符串的开头是否包含检索内容。

console.log('hello world'.startsWith('e'));//true

endsWith():用于检测字符串的结尾是否包含检索内容。

console.log('hello world'.endsWith('d'));//true

repeat():用于重复的生成改字符串,可设置生成次数。

console.log('hello world '.repeat(5));

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180130G13JXL00?refer=cp_1026

同媒体快讯

扫码关注云+社区