美文网首页
ES6新特性

ES6新特性

作者: 拓跋123 | 来源:发表于2018-04-05 12:57 被阅读5次

    1. 变量提升

    无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)

    var 和let的区别

    例:
    var

    function aa(){
        if(false){
            var test = "Hello World";
        }else{
            console.info(test);//undefined
        }
        console.info(test);//undefined
    }
    aa();
    

    let

    function aa(){
        if(false){
            let test = "Hello World";
        }else{
            console.info(test);//test is not defined
        }
        console.info(test);//test is not defined
    }
    aa();
    

    var和const区别

    例:var

    var test = "lidian";
    console.log(test);//lidian
    test = "lidianmo";
    console.log(test);//lidianmo
    

    const

    const test = "lidian";
    console.log(test);//lidian
    test = "lidianmo";
    console.log(test);//Uncaught TypeError: Assignment to constant variable.
    

    2. 模板字符串

    var name = "lidian";
    console.info("name:"+name);//name:lidian
    console.info(`name:${name}`);//name:lidian
    
        // es5
        var msg = "Hi \
        man!"
        // es6
        const template =
        `<div>
            <span>hello world</span>
        </div>`
        console.log(msg);
        console.log(template);
    
    var cludeStr = "ha";
    console.log(cludeStr.repeat(3));//hahaha
    console.log(cludeStr.includes("e"));//false
    

    3.函数默认参数

    function action(num = 200) {
        console.log(num)
    }
    action() //200
    action(0) //200
    action(300) //300
    

    4. 箭头函数

    • 不需要function关键字来创建函数
    • 省略return关键字
    • 继承当前上下文的 this 关键字
      例如:
    1和2效果是一样的
    var people1 = name =>'hello:' + name;
    var people2 = function(name){
        return `hello:${name}`;
    }
    

    PS:当函数有且仅有一个参数的时候,是可以省略掉括号的。当函数返回有且仅有一个表达式的时候可以省略{}

    var people1 = name =>'hello:' + name;
    var people2 = function(name){
        return `hello:${name}`;
    }
    console.log(people1(123));
    console.log(people2(456));
    
    var people = (name, age) => {
        const fullName = 'h' + name
        return fullName
    }
    var people = function(name,age){
        const fullName = 'h' + name
        return fullName
    }
    

    5. 拓展的对象功能

    1. 对象初始化简写
    //ES5    
    function people(name, age) {
        return {
            name: name,
            age: age
        };
    }
    //ES6
    function people(name, age) {
        return {
            name,
            age
        };
    }
    
    1. 对象中方法赋值,省略方法的冒号与function
        const people = {
            name: 'lux',
            getName: function() {
                console.log(this.name)
            }
        }
    
        const people = {
            name: 'lux',
            getName () {
                console.log(this.name)
            }
        }
    
    1. Object.assign() 同名的情况,后面会覆盖前面
    assign
    //ES5    
    function people1(name, age) {
        return {
            name: name,
            age: age
        };
    }
    //ES6
    function people2(sex, name) {
        return {
            sex,
            name
        };
    }
    const p1 = people1("lidian",12);
    const p2 = people2("girl","lidianmo");
    const obj = Object.assign({}, p1, p2);
    console.info(obj);
    
    1. 解构赋值---更方便的数据访问方式

    相关文章

      网友评论

          本文标题:ES6新特性

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