0

0

箭头函数 => 常规函数有什么问题吗?

霞舞

霞舞

发布时间:2024-11-12 10:45:09

|

771人浏览过

|

来源于dev.to

转载

箭头函数 => 常规函数有什么问题吗? 常规函数有什么问题吗?" />

如果您扩展了 javascript 知识并想知道为什么他们会在 ecmascript 2015 (es6) 中添加箭头函数,那么您并不孤单。当我加深对这门语言及其复杂性和怪癖的了解时,我发现自己也在想同样的事情。在这篇文章中,我将列出它的差异、优点、添加它的原因以及何时应该使用它。

我们来谈谈差异

在引入箭头函数之前,必须以传统格式声明函数,如下所示:

function add(x, y) {
  return x + y;
}

或声明为表达式:

const addfunction = function add(x, y) {
  return x + y;
}

引入箭头函数,可以写成:

const addfunction = (x,y) => x + y

简洁的语法

从上面的例子中,我们可以很容易地看出,通过使用箭头函数并利用其隐式返回特性,可以将函数快速重构为一行。生成的代码更简洁、更清晰、更易于阅读,从而使开发更顺畅、调试更快。

知识画家
知识画家

AI交互知识生成引擎,一句话生成知识视频、动画和应用

下载

吊装

默认情况下,javascript 运行时会在创建执行上下文时将所有函数和变量声明提升到其作用域的顶部。例如,在全局范围内,这可确保声明的所有函数和变量可供以后调用的所有函数使用。但是,箭头函数永远不会被提升,从而可以更好地控制函数执行位置及其有权访问的变量的精确位置。

语境

每次执行 javascript 函数时,它都会创建一个执行上下文,其中包含有关该函数运行的环境的信息,包括 this 的值。虽然传统函数在其自己的上下文中执行,但箭头函数将始终继承调用它的函数的上下文。
使用以下代码:

class person {
    constructor(){
        this.name = "george";
        this.greetings = ["good morning,","hello!","howdy!"];
    }

    printgreetings(){
        this.greetings.foreach(function print(greet){
            console.log(`${greet} ${this.name}`);
        });
    }
}

let person = new person();
person.printgreetings();

我们会得到一个错误:cannot read property 'foreach' of undefined,这是因为虽然 printgreetings 函数位于 person 类的上下文中并继承了它的上下文,但 foreach 函数(即使它的内置 javascript 函数) 在自己的上下文中运行,不包含 this.name 属性,因此会导致查找错误。

然而,箭头函数永远不会在自己的上下文中运行,并且通过使用箭头函数重写上面的函数...

printgreetings(){
    this.greetings.foreach((greet) => {
        console.log(`${greet} ${this.name}`);
    });
}

结果将如预期

Good Morning, George
Hello! George
Howdy! George

概括

总结箭头函数的好处;它们允许更短、更简洁的代码;提供功能块代码的隐式返回;不会提升到执行上下文的顶部并保持其在代码中的确切位置;最后,它们继承调用它的函数的上下文,而不执行它自己的上下文,从而允许更可预测地使用此关键字。

希望这篇文章可以帮助您更好地理解传统函数与箭头函数的区别和优点,并让您在 javascript 之旅中更进一步!

进一步阅读:
dmitri pavlutin 博客 - 箭头函数与常规函数之间的差异
mdn 参考文档 - 箭头函数

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

195

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2025.12.24

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

75

2025.12.04

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

5394

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3089

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

646

2025.12.25

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

8

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

时间管理,自律给我自由
时间管理,自律给我自由

共5课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号