2019-01-14 ES6let const,解构赋值,正则表达式

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;

}
 }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,151评论 0 7
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,467评论 0 5
  • 每个月第一天早上都会收到美乐家的最新促销链接,点进去看了下促销有零食,护肤品,日用品…,照例把链接发到朋友圈并@...
    向往精灵阅读 166评论 0 0
  • Day21 今天一大早看了一个小视频,讲通货膨胀的,有些感触,突然就想谈谈通货膨胀。 这个视频呢,讲的是一个小男孩...
    静雯1518阅读 317评论 0 1
  • 下午放学回到家后,子皓告诉我说,妈妈,明天我要带一本书,捐给西藏的学生们,并且还问说,妈妈,明天西藏的学生...
    林子皓妈妈阅读 75评论 0 0