ES6

71 阅读1分钟

var let const

  1. var变量的提升,let没有变量提升
  2. let不允许重复声明
  3. let存在块级作用域,var没有块级作用域
  4. let存在暂时性死区

const除了let所有特性外,不允许修改,const常量的声明与赋值必须同时进行

//    1.
        // console.log(a);// undefined
        // var a =1;//var 没有块级作用域
        // console.log(a);
        // let a=1;//报错
        // var a;
        // console.log(a);// undefined
        // a=1;
//    2.
         // var a=1;
        // var a=2;
        // console.log(a);//2
        // let a=1;
        // let a=2;
        // console.log(a);//报错

//    3.
        // var a=1;
        // {
        // var a=1;
        // }
        // console.log(a);// 1
        // {
        // let a=1;
        // }
        // console.log(a);//a is not defined  a没有声明


        // for(var i=1;i<10;i++){ 不使用var 

        // }
        // for (let i =0;  i < 10; i++)

        // }

//    4.
        // let a=1;
        // {
        //     console.log(a);
        //     let a=0;
        // }

变量的解构赋值

  1. 对象的解构赋值 解构时需要提供对象的属性名,会根据属性名找到对应的值。没有找到的返回缺省值,没有缺省值则返回 undefined。
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
  1. 字符串的解构赋值
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"
  1. 数组解构

解构的时候,变量从左到右和元素对齐,可变参数放到最右边。

能对应到数据就返回数据,对应不到数据的返回默认值,如果没有默认值返回undefined。

        const s=new Set(arr);
        const[...newArr]=s;
        console.log(newArr);

        //map  k-v 
        const map=new Map();
        map.set("name","张三");
        map.set("sex","男");
        map.set("age",21);
        console.log(map);

        for (const item of map) {
            const [k,v]=item
            console.log(k,v);//数组解构
        }