在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 箭头函数的使用ES6 中新增了使用箭头 本文第二块内容将介绍箭头函数和普通函数功能上的区别。 1. 普通函数到箭头函数如下所示,定义一个函数,可以使用 function getSum(a, b) { return a + b; } 若使用箭头函数来定义这个函数,可以写成如下形式,省略 const getSum = (a, b) => { return a + b; }; 2. 省略大括号和 return若定义的箭头函数,函数体内只有 如下所示,定义的箭头函数,完整写法。 const getSum = (a, b) => { return a + b; }; 此箭头函数的函数体内只有 const getSum = (a, b) => a + b; 3. 省略小括号若定义的箭头函数,参数只有一个,则可以省略小括号。 如下所示,定义的箭头函数,只有一个参数,完整写法。 const func = (a) => { return a + 2; }; 省略了参数旁边的小括号,以下代码等价于上面的代码。 const func = a => a + 2; 注意:若函数没有参数,或者多个参数的情况下,必须要使用括号。 2. 箭头函数与普通函数的区别大多数情况下,能使用普通函数的地方都可以用箭头函数代替,因为箭头函数更精简。 但在部分情况下,箭头函数与普通函数有着很大的却别。 1. 箭头函数的 this 是父级作用域的 this如下代码,定义了一个对象 const obj = { name: 'Jack', getThis() { console.log(this); }, }; obj.getThis(); // {name: 'Jack', getThis: ƒ} 同样定义一个对象 const obj = { name: 'Jack', getThis: () => { console.log(this); }, }; obj.getThis(); // Window 2. call、apply、bind无法改变箭头函数的 this如下代码,普通函数 const obj = { name: 'Jack', }; function getName() { console.log(this.name); } getName.call(obj); // Jack 若将函数改成箭头函数,那么 const obj = { name: 'Jack', }; const getName = () => { console.log(this.name); }; getName.call(obj); // undefined 3. 不可以作为构造函数箭头函数不可以作为构造函数使用,若将箭头函数作为构造函数,将报错,如下代码所示。 const Person = () => { this.name = 'Jack'; }; const usr = new Person(); // Person is not a constructor 4. 不可以使用 arguments在普通函数内部,可以使用 function func() { console.log(arguments); } func(1, 2, 3); // [Arguments] { '0': 1, '1': 2, '2': 3 } 而箭头函数就不可以使用 在浏览器中,若在箭头函数使用 const func = () => { // 浏览器环境 console.log(arguments); // arguments is not defined }; func(1, 2, 3); 但是箭头函数可以在参数内,以 const func = (...args) => { console.log(args); // [ 1, 2, 3 ] }; func(1, 2, 3); 5. 箭头函数不支持 new.target普通函数定义的构造函数内部,支持使用 function Person() { this.name = 'Jack'; console.log(new.target); } // 指向构造函数 new Person(); // [Function: Person] 而在箭头函数中,不支持使用 const Person=() =>{ this.name = 'Jack'; console.log(new.target); } // 浏览器环境 new Person(); // new.target expression is not allowed here
到此这篇关于JavaScript 箭头函数的特点、与普通函数的区别的文章就介绍到这了,更多相关js箭头函数普通函数内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论