JavaScript普通函数和箭头函数有哪些区别
这篇文章主要介绍JavaScript普通函数和箭头函数有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

黄陵网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
我常常的使用箭头函数,却还没有对箭头函数有个深入的了解,现在找一下这2个函数的不同点
1. 箭头函数本身没有prototype(原型)
由于箭头函数没有原型,因此箭头函数本身没有this
let a = () => {}
console.log(a.prototype) // undefined
let b = function () {}
console.log(b.prototype) // Object2. 箭头函数的this指向在定义的时候继承自外层第一个普通函数的this
let a;
let barObj = {
msg: 'bar的this指向'
}
let fooObj = {
msg: 'foo的this指向'
}
bar.call(barObj)
foo.call(fooObj) // { msg: 'bar的this指向' }
bar.call(fooObj)
a() // { msg: 'foo的this指向' }
function foo() {
a()
}
function bar () {
a = () => {
console.log(this)
}
}从上面例子中可以得出:
箭头函数的this指向定义时所在的外层第一个普通函数,跟使用位置没有没有关系
被继承的普通函数的this指向改变,箭头函数的this也会跟着改变。
不能直接修改箭头函数的this
可以通过修改被继承的普通函数的this指向,然后箭头函数的this也会跟着改变
3. 箭头函数使用arguments
let b = () => {
console.log(arguments);
}
b(1,2,3,4) // arguments is not defined
function bar () {
console.log(arguments); // 完成第二个普通函数
bb('完成第一个普通函数')
function bb() {
console.log(arguments); // 完成第一个普通函数
let a = () => {
console.log(arguments); // 完成第一个普通函数
}
a('箭头函数')
}
}
bar('完成第二个普通函数')从上面可以得出以下2点
- 箭头函数指向window时,arguments会报未定义的错误
- 如果不是window,那么就是外层第一个普通函数的arguments
4. 箭头函数不可以使用new
无论箭头函数的this指向哪里,使用new调用箭头函数都会报错,箭头函数没有构造函数
let a = () => {}
let b = new a() // a is not a constructor以上是JavaScript普通函数和箭头函数有哪些区别的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
当前名称:JavaScript普通函数和箭头函数有哪些区别
分享地址:http://www.jxjierui.cn/article/pdcjce.html


咨询
建站咨询
