箭头函数 箭头函数和普通函数的区别
大家好,今天来为大家解答箭头函数这个问题的一些问题点,包括箭头函数和普通函数的区别也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
箭头函数的特点
下面一波栗子走起,读者自己对号入座:
栗子一(请在浏览器环境下测试,不要使用node)
栗子二
箭头函数会捕获其所在上下文的 this值,作为自己的 this值;
但是我觉得这条和上条其实是一条,还是捕获所在的上下文,比如下面这个例子:c是一个箭头函数,然后它的 this是指向window,这是为什么呢,因为箭头函数捕获的是obj{}这个对象的环境,然后这个环境的this指向的是window,就相当于上一条的例子:在d方法里面return的那个箭头函数捕获的是c:function(){}这个环境的this,而这个环境的this是obj。
栗子三
箭头函数的this永远指向其上下文的 this,任何方法都改变不了其指向,如call(), bind(), apply(),比如栗子二中obj.d().call({ age: 20})//18,再来看稍微复杂的栗子:
PS:
箭头函数不能当做Generator函数,不能使用yield关键字
箭头函数不能换行SyntaxError: Unexpected token=>
普通函数的this指向调用它的那个对象
箭头函数与普通函数的区别 什么是函数
1、箭头函数与普通函数的区别:外形不同:箭头函数使用箭头定义,普通函数中没有。箭头函数全都是匿名函数,普通函数可以有匿名函数,也可以有具名函数。箭头函数不能用于构造函数,普通函数可以用于构造函数,以此创建对象实例。
2、函数(function)的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。函数的近代定义是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示,函数概念含有三个要素:定义域A、值域B和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
箭头函数的使用和this指向
(param1, param2,…, paramN)=>{ statements}
(param1, param2,…, paramN)=> expression
//相当于:(param1, param2,…, paramN)=>{ return expression;}
//当只有一个参数时,圆括号是可选的:
(singleParam)=>{ statements}
singleParam=>{ statements}
//没有参数的函数应该写成一对圆括号。
()=>{ statements}
arr= [20,1,34,2],使用函数实现数组中的每项数据都乘2的操作,最后得到
arr= [40.2.68.4]
1.(param1)=>{}
2.param1=>{}只有一个参数时,可以省略圆括号
3.param1=>……当方法体内只有一个return语句时,可以省略方法体的花括号和return关键字
箭头函数没有自己的this,那他的this去哪里找?
箭头函数会继承自作用域链中上一层的this,也就是箭头函数会顺着他的作用域链,一层一层往上找,知道找到有this为止。
setTimeout().call(window),所以setTimeout中的this被call改变成window
第一个setTimeout被call改变this指向,this指向window
第二个setTimeout的箭头函数没有单独的this,向上寻找,找到上一层setTimeout的this,指向window
第三个同第一个一样指向window
第四个同第二个一样,只是第四个的上一层是箭头函数,箭头函数没有this,继续向上一层找,找到aaa()的this,aaa()由obj调用,this指向obj
关于箭头函数和箭头函数和普通函数的区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。