wwwhj8828com18669144445,js-ES6箭头函数

 时间:2024-10-11 22:42:40

1、ES6 增加了箭头函数:

wwwhj8828com18669144445,js-ES6箭头函数

3、如果需要给函数传入多个参数:

wwwhj8828com18669144445,js-ES6箭头函数

5、如果需要直接返回一个对象:

wwwhj8828com18669144445,js-ES6箭头函数

7、很多时候,你可能想不到要这样用,所以再来举个例子,比如在 React 与 Immutable 的技术选型中,我们处理一个事件会这样做:

wwwhj8828com18669144445,js-ES6箭头函数

9、比较本篇我们重点比较一下箭头函数与普通函数。

10、主要区别包括:

11、冤铘讵柘没有 this箭头函数没有 this,所以需要通过查找作用域链来确定 this 的值。这就意味着如果箭头函数被非箭头函数包含,t茑霁酌绡his 绑定的就是最近一层非箭头函数的 this。模拟一个实际开发中的例子:我们的需求是点击一个按钮,改变该按钮的背景色。为了方便开发,我们抽离一个 Button 组件,当需要使用的时候,直接:

wwwhj8828com18669144445,js-ES6箭头函数

13、JavaScript 代码如下:

wwwhj8828com18669144445,js-ES6箭头函数

17、不就可以解决这个问题了?

18、确实可以这样做,但是在实际的开发中,我们可能会在 setBgColor 中还调用其他的函数,比如写成这种:

wwwhj8828com18669144445,js-ES6箭头函数

21、为避免 addEventListener 的影响,使用 bind 强制绑定 setBgColor() 的 this 为实例对象

22、使用 ES6,我们可以更好的解决这个问题:

wwwhj8828com18669144445,js-ES6箭头函数

26、 冤铘讵柘没有 arguments箭头函数没有自己的 arguments 对象,这不一定是件坏事,因为箭头函数可以访问外围函数的 arguments 对象:

wwwhj8828com18669144445,js-ES6箭头函数

29、 不能通过 new 关键字调用

30、JavaScript 函数有两个内部方法:[[Call觥终柯计]] 和 [[Construct]]。当通过 new 调用函数时,执行 [[Construct]] 方法,创建一个实例对象,然后再执行挣窝酵聒函数体,将 this 绑定到实例上。当直接调用的时候,执行 [[Call]] 方法,直接执行函数体。

31、箭头函数并没有 [[Construct]] 方法,不能被用作构造函数,如果通过 new 的方式调用,会报错。

wwwhj8828com18669144445,js-ES6箭头函数

35、 没有 super连原型都没有,自然也不能通过 super 来访问原型的属性,所以箭头函数也是没有 super 的,不过跟 this、arguments、new.target 一样,这些值由外围最近一层非箭头函数决定。

36、最后,关于箭头函数,引用 MDN 的介绍就是:

wwwhj8828com18669144445,js-ES6箭头函数

40、对象属性中的函数就被称之为 method,那么 non-mehtod 就是指不被用作对象属性中的函数了,可是为什么说箭头函数更适合 non-method 呢?

41、让我们来看一个例子就明白了:

wwwhj8828com18669144445,js-ES6箭头函数

44、或者

wwwhj8828com18669144445,js-ES6箭头函数

46、但是注意:使用以下这种写法却会报错:

wwwhj8828com18669144445,js-ES6箭头函数
  • realme x2高性能模式打开方式
  • 华为路由器怎么设置WiFi定时加速
  • 华为手机安全管家要怎么开启性能模式
  • 磁力盒子打不开,怎么修改
  • UC浏览器如何查看网盘中的文档
  • 热门搜索
    深圳旅游攻略 延安旅游 去泰国旅游要多少钱 漠河旅游 泰山旅游攻略 江苏旅游 旅游景点推荐 重庆旅游景点 旅游产品 日本旅游攻略