ES6

作者: LorenaLu | 来源:发表于2017-07-18 16:22 被阅读0次

    let

    1、let 声明的变量 没有变量提升
    console.log(a);
    let a = "sun";//a is not defined
    2、块级作用域
    for(let i = 0;i<5;i++){
    }
    console.log(i);//i is not defined

    var arr=[];
    for(let i = 0;i<5;i++){
    arr[i] = function(){
    console.log(i);
    }
    }
    arr3;//3
    3、变量不能重复声明
    let c = 10;
    let c = 20;
    console.log(c);//报错
    4、暂时性死区
    使用let声明的变量不受外部同名的影响

    constant 常量

    一旦声明,需要立即赋值
    一旦声明,不可更改
    其他与let一致
    var PI = 3.14;// 常用大写单词表示这是一个常量
    PI = "三点一四"
    const PI2 = 3.14;
    const p = 3.14;
    const p2;//报错
    PI2 = 3.14;//报错

    arrow 箭头函数

    var fun = function (){
        return 10;
    }
    fun();
    
    let foo = () => 50;
    console.log(foo());//50
    //省略了return 关键字和花括号
    
    let bar = (a,b) => a*b;
    console.log(bar(10,20));
    
    let a = (a,b)=>{
        return a+b;
    }
    console.log(a(33,44));
    
    function b(callback){
        callback();
    }
    b(function(){
        console.log(1111);
    });
    b(()=>{console.log(222)})
    

    箭头函数能保留当前的作用域
    使用箭头函数声明的函数,其作用域为声明时所在的位置(作用域)
    箭头函数不能使用new,箭头函数里面不能使用arguments

    let name = "ab";
    let obj = {
        name : "zhar",
        say : function(){
            console.log(this.name);
            // var _this = this;
            setTimeout(()=>console.log(this.name),0)
            // setTimeout(function(){
            //     console.log(_this.name);//this作用域被更改
            // },0)
        }
    }
    obj.say()//zhar
    

    template 模板字符串

    let name = "sun"
    var str = `
        <div>
        asd
            <p>${name}</p>
        </div>
    `;
    console.log(str);
    

    object

    let obj5 = {name:"sun",age:300}
    // let {name,age} = obj5;
    // let{nn,age} = obj5;
    let {age} = obj5;//let age = obj5.age
    console.log(age);
    

    set&map

    //array&object
    Set与Array类似,无重复元素 无length 属性
    构建方法:
    1、let s = new Set([1,2,2,2,1]);
    2、let s = new Set();
    s.add(1)
    无length属性,有size属性
    add() 向集合添加元素
    delete() 删除指定元素
    has() 判断集合是否包含指定元素
    size() 得到集合长度
    clear() 清空集合

    let s2 = new Set();
    s2.add(1)
    s2.add(1)
    s2.add(2)
    s2.add(2)
    s.add(1);
    console.log(s2,s2.size);//1,2;2
    console.log(s2.has(1),s2.has(3))//true,false
    s2.delete(1);
    console.log(s2);//2
    
    console.log(s.keys());
    console.log(s.values())
    console.log(s.entries())
    
    let m = new Map();
    m.set("name","sun")
    console.log(m);
    
    console.log(m.get("name"))
    
    // map 可以使用任意类型做键,哪怕是函数和对象
    let a = 10;
    m.set(a,"abc")
    console.log(m)//Map{'name'=>'sun',10=>'abc'}
    
    //$("div").length
    //$("div").size()
    

    other

    function fun(){
        console.log(arguments);//{ '0': 'a', '1': 'b', '2': 'c' }
        // Array.prototype.slice.call(arguments)
        //类数组转数组(NodeList节点集合/String)
        let a = Array.from(arguments);
        a.push("f")
        console.log(a);
    }
    fun("a","b","c");//[ 'a', 'b', 'c', 'f' ]
    
    let b = Array.from("hello")
    console.log(b)//[ 'h', 'e', 'l', 'l', 'o' ]
    

    promise 承诺(重要)

    代表未来才会知道结果的事情,通常为异步操作setTimeout、ajax,不可预估返回结果的时间

    default默认参数

    function fun(a){
        a = a||0;
        return a/5
    }
    console.log(fun(3));//0.6
    console.log(fun())//0
    
    //参数默认值
    function bar(a=0){
        return a/5;
    }
    console.log(bar());//0
    console.log(bar(10));//2
    

    class

    reset 运算符

    ...代表剩余参数
    function fun(...a){
        // arguments
        console.log(a)
    }
    fun(2,3,4,5,6,7,8);//[ 2, 3, 4, 5, 6, 7, 8 ]
    
    function fun(d,e,...a){
        console.log(d,e,a)
    }
    fun(2,3,4,5,6,7,8);//2 3 [ 4, 5, 6, 7, 8 ]
    

    ...叫做扩展运算符

    相关文章

      网友评论

        本文标题:ES6

        本文链接:https://www.haomeiwen.com/subject/esgckxtx.html