ES6 就是ECMAScript 6是新版本JavaScript语言的标准。
1.let 定义变量,存在于代码块,出了代码块就不存在,适用于for循环
2.const/constant 定义常量,不能改变,必须要有初始值
3.变量的解构赋值(数组)
var [a,b,c]=[1,2,3];abc分别是123
var [a,...c]=[1,2,3]; a等于1,c等于23
var [a,b,c='default',d='default'] = [1,2,3]; a=1,b=2,c=3,d=default
var arr=[1,2,3]
var [a,b,c='defaut',d='defalut']=arr
let [a,b,c] = [1,2];不会报错
4.变量的解构赋值(对象)
顺序不再重要,名称重要
var obj={
a:1,
b:2
};
let {c,b}=obj;
let {a:A,b}=obj; //先找到对象里的小a 再命名成大A
对obj进行解构
var obj={
arr:[
'yo.',
{
a:1,
}
]
}
let {arr:[greet,{a}]}=obj;
得出结果是,greet:yo. a:1
默认值的指定方式
let {a=1,b=2} = {a:10}
console.log("a",a);
console.log("a",a); //得出结果:a=10,b=2
解构方法
let {floor,pow} = Math;
let a =1.1;
console.log("floor(a)",floor(a)); 得出结果是1,如果a=1.9,结果也还是1
console.log("pow(2,3)",pow(2,3)); 得出结果是8
5.变量的解构赋值(其他)
求字符串的长度
let {length}='yo.';
console.log("length",length) //结果是3
解构字符串
let [a,b,c]='yo.';
console.log(a,b,c); //结果是y o .
直接对函数传参解构
var arr=[1,2];
functon test([a,b])
{
console.log("a",a);
console.log("b",b);
}
test(arr);
对象函数解构
var obj={b:2}
function test({a=10,b})
{
console.log("a",a);
console.log("b",b);
}
test(obj);
6.新增字符串方法
字符串yo是否包含y
console.log('yo'.includes('y')); //ture or false
字符串yo是否是以y开头
console.log('yo'.startsWith('y')); //ture or false
字符串yo是否是以o结尾
console.log('yo'.endsWith('o')); //ture or false
重复字符串
console.log('yo '.repeat(3)); //重复字符串yo 3次
7.模板字符串
ES5语法与ES6语法比较
let title='啊啊啊';
var tpl1='<div>'+'<span>'+title+'</span>'+'/<div>';
let tpl2='
<div>
<span>${title}</span> //里面还可以嵌套
</div>
';
8.symbol类型
以前的类型:undefined/null/boolean/sting/number/object
每次创建一个symbol值都不一样
let a=Symbol();
let b=Symbol();
console.log(a===b); //结果是false
在代码上游定义一个symbol 然后下游区域块里再定义Symbol,可以改变,但是在下游全部定义改变不了,还是上游的定义。
9.Proxy 代理,用于在语言层面上操作对象
Proxy(原对象,配置项)
10.set 每一个值都是唯一的
var s=new Set([1,2,3,3])
console.log("s.size:",s.size);//结果是3
console.log("s:",s); //结果是Set{1,2,3}
s.add(4) //添加
console.log("s:",s); //结果是 Set {1,2,3,4}
s.delete(2) //删除
console.log("s:",s); //结果是 Set{1,3,4}
检查是否有这个值
console.log("s.has(5):"s.has(5)); //结果是s.has(5):false
清空
s.clear();
console.log("s:",s);//结果 Set{}
1.let 定义变量,存在于代码块,出了代码块就不存在,适用于for循环
2.const/constant 定义常量,不能改变,必须要有初始值
3.变量的解构赋值(数组)
var [a,b,c]=[1,2,3];abc分别是123
var [a,...c]=[1,2,3]; a等于1,c等于23
var [a,b,c='default',d='default'] = [1,2,3]; a=1,b=2,c=3,d=default
var arr=[1,2,3]
var [a,b,c='defaut',d='defalut']=arr
let [a,b,c] = [1,2];不会报错
4.变量的解构赋值(对象)
顺序不再重要,名称重要
var obj={
a:1,
b:2
};
let {c,b}=obj;
let {a:A,b}=obj; //先找到对象里的小a 再命名成大A
对obj进行解构
var obj={
arr:[
'yo.',
{
a:1,
}
]
}
let {arr:[greet,{a}]}=obj;
得出结果是,greet:yo. a:1
默认值的指定方式
let {a=1,b=2} = {a:10}
console.log("a",a);
console.log("a",a); //得出结果:a=10,b=2
解构方法
let {floor,pow} = Math;
let a =1.1;
console.log("floor(a)",floor(a)); 得出结果是1,如果a=1.9,结果也还是1
console.log("pow(2,3)",pow(2,3)); 得出结果是8
5.变量的解构赋值(其他)
求字符串的长度
let {length}='yo.';
console.log("length",length) //结果是3
解构字符串
let [a,b,c]='yo.';
console.log(a,b,c); //结果是y o .
直接对函数传参解构
var arr=[1,2];
functon test([a,b])
{
console.log("a",a);
console.log("b",b);
}
test(arr);
对象函数解构
var obj={b:2}
function test({a=10,b})
{
console.log("a",a);
console.log("b",b);
}
test(obj);
6.新增字符串方法
字符串yo是否包含y
console.log('yo'.includes('y')); //ture or false
字符串yo是否是以y开头
console.log('yo'.startsWith('y')); //ture or false
字符串yo是否是以o结尾
console.log('yo'.endsWith('o')); //ture or false
重复字符串
console.log('yo '.repeat(3)); //重复字符串yo 3次
7.模板字符串
ES5语法与ES6语法比较
let title='啊啊啊';
var tpl1='<div>'+'<span>'+title+'</span>'+'/<div>';
let tpl2='
<div>
<span>${title}</span> //里面还可以嵌套
</div>
';
8.symbol类型
以前的类型:undefined/null/boolean/sting/number/object
每次创建一个symbol值都不一样
let a=Symbol();
let b=Symbol();
console.log(a===b); //结果是false
在代码上游定义一个symbol 然后下游区域块里再定义Symbol,可以改变,但是在下游全部定义改变不了,还是上游的定义。
9.Proxy 代理,用于在语言层面上操作对象
Proxy(原对象,配置项)
10.set 每一个值都是唯一的
var s=new Set([1,2,3,3])
console.log("s.size:",s.size);//结果是3
console.log("s:",s); //结果是Set{1,2,3}
s.add(4) //添加
console.log("s:",s); //结果是 Set {1,2,3,4}
s.delete(2) //删除
console.log("s:",s); //结果是 Set{1,3,4}
检查是否有这个值
console.log("s.has(5):"s.has(5)); //结果是s.has(5):false
清空
s.clear();
console.log("s:",s);//结果 Set{}