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));
领取专属 10元无门槛券
私享最新 技术干货