博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
箭头函数
阅读量:6612 次
发布时间:2019-06-24

本文共 1799 字,大约阅读时间需要 5 分钟。

1.先看个例子

function sum1(name){    return name * 3}sum1(9) //27复制代码

再看这个例子有什么不同

var sum1 = (name) => name * 3sum1(9) //27复制代码

是不是简洁了很多嘞,等于把function去掉而用'=>'代替(这样描述可能不好,方便记忆。)所以箭头函数的优点是简洁代码。

2.还有这种,假如参数是一个的话,我们还可以把()省略

var  sum2 = function(v1){    return v1}sum2(2)复制代码

变这样

var sum2 = v1 => v1sum2(2)复制代码

3.有个需要注意的,假如箭头函数返回的是一个对象,这个对象要用()把它盘起来,不然直接报错。

var sum3 = y => ({name: 'Tom', age: 20})console.log(sum3) //v => ({name: 'Tom', age: 20})复制代码

4.还是多看例子,遍历数组的例子。

普通写法

var arr = [1, 2, 3].map(function(x){    return x * x})console.log(arr) //[1, 4, 9]复制代码

用箭头函数怎么写

var arr = [1, 2, 3].map(x => x * x )console.log(arr) //[1, 4, 9]复制代码

5.这样

普通的

var sum4 = function(v1, v2){    return v1 - v2}sum4(5, 6) //-1复制代码

箭头的(前提是return后面跟的是一个表达式)

var sum4 = (v1, v2) => {    return v1 - v2}sum4(5, 6) //-1复制代码

不急,还有更简洁的。

var sum4 = (v1, v2) => v1 - v2sum4(5, 6) //-1复制代码

下面说一下箭头函数的this

  • 箭头函数的 this 始终指向函数定义时的 this,而非执行时。,箭头函数需要记着这句话:“箭头函数中没有 this 绑定,必须通过查找作用域链来决定其值,如果箭头函数被非箭头函数包含,则 this 绑定的是最近一层非箭头函数的 this,否则,this 为 undefined”。

我觉得这个例子挺好的,借来看看。

var app = {    fn1() {        setTimeout(function(){            console.log(this)        }, 10)    },    fn2() {        setTimeout(()=>{            console.log(this)        },20)    },    fn3() {        setTimeout((function(){            console.log(this)        }).bind(this), 30)            },    fn4: ()=> {        setTimeout(()=>{            console.log(this)        },40)            }}app.fn1()app.fn2()app.fn3()app.fn4()复制代码
app.fn1() //window 前面没有东西执行这个fn1,所以是window,这个按照平时的this来解读app.fn2() //app 箭头函数里面没资格有自己的this,借用setTimeout外面的this,也就是appapp.fn3() //app 注意bindapp.fn4() //app 箭头函数没有this,向上找,找到了app复制代码

补充:

  • 箭头函数不能被new调用,会报错。
  • 箭头函数没有原型,所以也没有prototype这个属性。
  • 箭头函数没有this,通过查找作用域链来决定。

自己对函数箭头的理解笔记,有误请指正,ヾ(◍°∇°◍)ノ゙加油

转载于:https://juejin.im/post/5c44599d6fb9a049b2222f31

你可能感兴趣的文章
2-scala文件操作--自动关闭打开的资源,读取properties文件
查看>>
Java 8中处理日期和时间示例
查看>>
Linux下使用inode删除文件(解决rm 无法删除的文件)
查看>>
浅谈Linux下的EXT3文件系统
查看>>
一步一步搭建apache+tomcat 负载均衡集群
查看>>
java 环境搭建
查看>>
JAVA程序员面试总结
查看>>
单例模式的几种方法
查看>>
win7组策略脚本无法执行
查看>>
ubuntu 访问windows共享目录
查看>>
Servlet3.1规范翻译 - 注解和可插拔性
查看>>
mac idea快捷键使用方法
查看>>
linux重启与关机--reboot、halt
查看>>
python对kafka的基本操作
查看>>
02. NPM 和 expressJs
查看>>
C语言判断“1000年—2000年”之间的闰年
查看>>
詹妮弗安妮斯顿与皮特离婚是说的话
查看>>
instr和substr函数
查看>>
我的移动开发情缘
查看>>
多态学习小记
查看>>