一.箭头函数和普通函数的区别

1.普通函数中的this:

代表它的直接调用者(js的this是执行上下文), 例如 obj.cal() ,那么cal()方法中的this就是obj

若没找到直接调用者,则this指的是 window (常见的window的属性和方法有: alert, location,document,parseInt,setTimeout,setInterval等)或者 undefined

上图  普通函数  代码解析:
getFullName( )方法的直接调用者是Person对象,所以”1 -- >”位置输出如图;
 fn( )方法没有直接调用者对吧,所以“2-->位置”输出了一个 window对象
fn( )中this.firstName,this.lastName为 NaN

2.箭头函数中的this

箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的

对象(宿主对象)

您就记住这句话:箭头函数中的this指向外层调用者

上图 箭头函数 代码解析:
getFullName( )方法的直接调用者是Person对象,所以”1 -- >”位置输出如图;
 fn( )这个箭头函数方法的外层调用者还是Peoson对象,所以“2-->位置”的是外层调用者Person对象的信息
返回的是return fn()函数 返回“3-->”中的 ‘hello’+’world’  即helloworld

所以:

1.普通函数中的this指向 它的直接调用者
箭头函数中的this指向 它的外层调用者

2.什么时候使用箭头函数函数?

当把一个函数的结果(返回值)作为另一个函数的参数的时候

您发现了麽 钩子函数作为方法的参数比如上图中的 fn( )方法的参数就是 “3-->”中的 this.firstname+this.lastname 即’helloworld’


-----------------------------------分割线------------------------------

二.箭头函数基础语法详情

1.声明:普通函数                                                 |                            钩子函数

                           

2.当函数参数只有一个,括号可以省略;但是没有参数时,括号不可以省略。

3.箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种只包含一个表达式,省略掉了{ ... }和return。还有一种可以包含多条语句,这时候就不能省略{ ... }和return

4.如果返回一个对象,需要特别注意,如果是单表达式要返回自定义对象,不写括号会报错,因为和函数体的{ ... }有语法冲突。注意,用小括号包含大括号则是对象的定义,而非函数主体

 写到最后(分享呕心沥血好文👇)

Logo

前往低代码交流专区

更多推荐