深入理解es6,看后总结

1.let:(变量使用)

1.不可重复定义。(同一作用域,ps:无论let,const)
2.预编译不会声明提升
3.解决循环中,函数表达式问题(IIFE)
4.使用完立即清除
ps:var会覆盖全局变量,而let和const不会

var RegExp = "Hello!";
console.log(window.RegExp);     // "Hello!"
// in a browser
let RegExp = "Hello!";
console.log(RegExp);                    // "Hello!"
console.log(window.RegExp === RegExp);  // false

const ncz = "Hi!";
console.log(ncz);                       // "Hi!"
console.log("ncz" in window);           // false

2.const:(不变的常量,和function使用)

1.必须初始化。
2.不能修改绑定,但可以修改属性值和添加属性。
3.不可重复定义。(同一作用域,ps:无论let,const)
4.预编译不会声明提升
5.使用完立即清除


3.不定参数和展开运算符,解构:(用法…a,长得很像,用法不一样)

1.不定参数:必须写在最后。

// Syntax error: Can't have a named parameter after rest parameters
err:function pick(object, ...keys, last) {
    let result = Object.create(null);

    for (let i = 0, len = keys.length; i < len; i++) {
        result[keys[i]] = object[keys[i]];
    }

    return result;
}
right:function pick(object, last, ...keys) {
//someThing
}

2.不定参数:如果参数必须为一个不能使用。

const object = {

    // Syntax error: Can't use rest param in setter
    set name(...value) {
        // do something
    }
};

3.展开运算符。()

const values = [25, 50, 75, 100]

// equivalent to
// console.log(Math.max(25, 50, 75, 100));
console.log(Math.max(...values));           // 100

4.解构

const values = {name:"cx",age:18,height:170}
const {name} = values;
const { name:newName } = values;
console.log(name,newName);           // cx,cx

4箭头函数:(=》和传统函数的不同)

写法:

var reflect = value => value;
//or  多参数:var reflect = (...value) => value;
//or  无参数:var reflect = () => {};
// 转化:

var reflect = function(value) {
    return value;
};

加入字面量

var getTempItem = id => ({ id: id, name: "Temp" });

// effectively equivalent to:

var getTempItem = function(id) {

    return {
        id: id,
        name: "Temp"
    };
};

1.没有this,super,arguments,new.target绑定(由外围最近一层非箭头函数决定)。
传统函数:

var PageHandler = {

    id: "123456",

    init: function() {
        document.addEventListener("click", (function(event) {
            this.doSomething(event.type);     // no error
        }).bind(this), false);//必须通过bind(this)绑定事件对象
    },

    doSomething: function(type) {
        console.log("Handling " + type  + " for " + this.id);
    }
};

箭头函数:

var PageHandler = {

    id: "123456",

    init: function() {
        document.addEventListener("click",
                event => this.doSomething(event.type), false);//无需绑定因为
    },

    doSomething: function(type) {
        console.log("Handling " + type  + " for " + this.id);
    }
};

2.不能通过new关键字调用。
3.没有原型。
4.#不可以改变this的绑定。
5.不能重名。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值