JavaScript普通函数和箭头函数有哪些区别-创新互联
这篇文章主要介绍JavaScript普通函数和箭头函数有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
站在用户的角度思考问题,与客户深入沟通,找到思礼网站设计与思礼网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟主机、企业邮箱。业务覆盖思礼地区。我常常的使用箭头函数,却还没有对箭头函数有个深入的了解,现在找一下这2个函数的不同点
1. 箭头函数本身没有prototype(原型)
由于箭头函数没有原型,因此箭头函数本身没有this
let a = () => {} console.log(a.prototype) // undefined let b = function () {} console.log(b.prototype) // Object
2. 箭头函数的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普通函数和箭头函数有哪些区别的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:JavaScript普通函数和箭头函数有哪些区别-创新互联
文章链接:http://ybzwz.com/article/gjpes.html