es6箭头函数踩坑点

基础用法

es6允许使用箭头(=>)定义函数

    const arrowFunc = () => void console.log("Hello Word!");

使用圆括号代表参数部分,如果代码块部分执行语句较多,需要使用大括号将代码块包裹起来,如果函数只返回一个对象,这需要在括号将对象进行包裹,如果代码块只用一条语句,且不返回任何值,可以使用void命令。

踩坑点

函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。箭头函数没有自己的this对象,与包裹它的代码共享this对象,因此bind call apply对其无效。

    //  this 对象
    var bob = {
        _name: "Bob",
        _friends: [],
        printFriends() {
            this._friends.forEach(f => console.log(this._name + " knows " + f));
        }
    };

不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
与包裹它的代码共享arguments对象不,因此arguments对象在函数体内不存在。可以用rest 参数代替。

    // arguments 对象
    function square() {
        let example = () => {
            let numbers = [];
            for (let number of arguments) {
                numbers.push(number * number);
            }
            return numbers;
        };
        return example();
    }
    square(2, 4, 7.5, 8, 11.5, 21); // returns: [4, 16, 56.25, 64, 132.25, 441]
    const arrowRest = (...rest) => {
        for(let val of rest){
            console.log(`${val - }`);
        }
    };
    arrowRest(1,2,3);// 1 - 2 - 3 - 

不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

猜你喜欢

转载自blog.csdn.net/HH921227/article/details/80003639