|
Post by account_disabled on Jan 27, 2024 12:30:46 GMT 6.5
本文包含在我们的选集《Modern JavaScript》中。如果您希望一切都集中在一个地方,以跟上现代 JavaScript 的速度,请注册 SitePoint Premium 并自行下载一份副本。 您听说过 JavaScript 是一种函数式语言,或者至少它能够支持函数式编程。但什么是函数式编程呢?就此而言,如果您要开始比较一般的编程范例,那么函数式方法与您一直编写的 JavaScript 有何不同? 好消息是 JavaScript 在范式方面并不挑剔。您可以根据需要混合命令式、面向对象、原型和函数代码,并且仍然可以完成工作。但坏消息是这对您的代码意味着什么。JavaScript 可以在同一代码库中同时支持多种编程风格,因此您需要在可维护性、可读性和性能方面做出正确的选择。 函数式 JavaScript 不必为了增加价值而接管整个项目。学习一些关于函数式方法的知识可以帮助指导您在构建项目时做出的一些决策,无论您喜欢如何构建代码。 无论您喜欢哪种方法,学习一些函数式模式和技术都可以帮助您编写更干净、更优雅的 JavaScript。 命令式 JavaScript JavaScript 最初作为浏览器内语言而流行,主要用于向网页上的元素添加简单的悬停和单击效果。多年来,这就是人们对它的大部分了解,这导 WhatsApp 号码数据 致了 JavaScript 早期的坏名声。当开发人员努力将 JavaScript 的灵活性与浏览器文档对象模型 (DOM) 的复杂性相匹配时,实际的 JavaScript 代码在现实世界中通常看起来像这样在这个小代码片段中发生了很多事情。变量是在全局范围内定义的。值由函数传递和修改。DOM 方法正在与本机 JavaScript 混合。函数名称的描述性不是很强,部分原因是整个事情依赖于可能存在或可能不存在的上下文。但是,如果您碰巧在定义了 a 的 HTML 文档内的浏览器中运行此命令则可能会提示您输入要使用的某些文本,然后看到alert该文本中每个单词的首字母大写的 an。 像这样的命令式代码被编写为从上到下读取和执行(给予或采取一点变量提升)。但是我们可以利用 JavaScript 面向对象的特性进行一些改进来清理它并使其更具可读性。 面向对象的 JavaScript 几年后,开发人员开始注意到在浏览器等共享环境中命令式编码的问题。JavaScript 代码片段中的全局变量会破坏另一代码片段设置的全局变量。调用代码的顺序以不可预测的方式影响结果,特别是考虑到网络连接和渲染时间带来的延迟。 最终,出现了一些更好的实践来帮助封装 JavaScript 代码并使其更好地与 DOM 配合使用。上面相同代码的更新变体,按照面向对象的标准编写,可能如下所示 在这个面向对象的版本中,构造函数模拟一个类来建模我们想要的对象。方法存在于新对象的原型上,以保持较低的内存使用量。所有代码都隔离在一个立即调用的匿名函数表达式中,因此不会影响全局范围。
|
|