let 定义变量
作用域:全局,函数,块
function test(){
for(var i=1;i<3,i++){
console.log(i);
}
console.log(i);
}
test();
//此时的输出结果为1 2 3
当把var 改为let时,此时输出的结果为1 2 uncaugth reference error引用错误;此处即强调块儿级作用域的概念
- ES6中不允许重复声明
- ES6中使用严格模式
- const声明常量,不可更改,必须赋值,具有块级作用域的概念;当为对象时,可以修改对象内的常量属性。
解构赋值
两种解构的一一对应
- 数组解构赋值
- 对象的解构赋值
{
let a,b,rest;
[a,b]=[1,2];
console.log(a,b);//1 2
}
{
let a,b,rest;
[a,b,...rest]=[1,2,3,4,5,6];
console.log(a,b,rest);//1,2,[3,4,5,6]
}
{
let a,b;
({a,b}={a:1,b:2})
console.log(a,b);//1,2
}
{
let a,b,rest;
[a,b,rest]=[1,2];
console.log(a,b,rest);//1,2,unfined
}
数组的解构赋值
{
let a=1;
let b=2;
[a,b]=[b,a];
console.log(a,b);//2,1交换值
}
//以下为a,b赋值
{
function f(){
return [1,2];
}
let a,b;
[a,b]=f();
}
//当返回多个值时忽略无用的,只取我们需要的值
{
function f(){
return [1,2,3,4,5];
}
let a,b,c;
[a,b,,,c]=f();
console.log(a,b,c);//1,2,5
}
//当我们只需要第一个值时,我们只取第一个,把剩下的塞进一个数组中,等到使用时在进行遍历
{
function f(){
return [1,2,3,4,5];
}
let a,b;
[a,...b]=f();
console.log(a,b);//a=1;b=[2,3,4,5]
}
对象的解构赋值
{
let o={p:42,q:true};
let {p,q}=o;
console.log(p,q);//42 true
}
{
let {a=10,b=5}={a:3};
console.log(a,b);//3,5
}
//对象嵌套取值
{
let data={
title:'abc',
test:[{
title:'test',
desc:'description'
}]
}
let {title:estitle,test:[{title:cntitle}]}=data;
//abc test
}
解构赋值:两边一一对应即可
正则扩展
修饰符g与修饰符y,/g代表全局匹配,/y表示一个接一个匹配
{
let s='bbb-bb-b';
let a1=/b+/g;
let a2=/b+/y;
console.log(a1.exec(s),a2.exec(s));//bbb bbb
console.log(a1.exec(s),a2.exec(s))//bbb 空
}
- 可通过sticky判断是否开启y修饰符
- /u,Unicode处理
{
console.log(/^\uD83D/.test('\uD83D\uDC2A'));
console.log(/^\uD83D/u.test('\uD83D\uDC2A'));
//true,不加/u第一个中就是两个字符,只要匹配第一个即可
//false加/u之后,他就是一个字符多以不匹配
}
正则表达式中,.代表任意字符,当字节编码超过两个字节时,可用
字符串扩展
npm install babel-ployfill --save//安装依赖
- 处理Unicode超过两个字节,console.log('/u{20BB7}');用{}括起来
- 字符串的遍历
{
let str='\u{20BB7}abc';
for(let i=0;i<str.lrngth;i++){
console.log(str[i]);
//输出为 & & a b c (乱码)
}
for (let code of str){
console.log(code);
//输出为 吉abc
}
}
- str.includes('c');//是否包含字符c
- str.startwith('c')//以c开头
- str.endwith(c")//以c结束
- str.repeat(2)//复制str
- 模板字符串:把数据和模板结合一起拼成一个带结果的字符串
{
let name='zhangsan';
let info="hello world";
let m=`i am ${name},${info}`;
}
- padstart(2,'0');//长度达不到2时在开始补0
- padend(2,'0');//长度达不到2时在末尾补0
- 标签模板--用于多语言之间的转换
{
let user={
name:zhangsan
info:'hello world'
}
console.log(abc,'i am' ${user.name},${user.info});
function abc(s,v1,v2){
console.log(s,v1,v2);
return s+v1+v2;
}
}