五个强大的 JavaScript 特性技巧

作者 | Alexander T. Williams

译者 | 明知山

策划 | Tina

JavaScript 是现代 Web 开发中一个必不可少的工具,它不断发展和演变,不断建立新的标准。在本文中,我们专注于介绍五种前沿的 JavaScript 技术,向开发者展示构建高交互性和高性能动态 Web 应用程序的创新性方法。从单子(Monad)到模式匹配,我们将带你了解最新、最伟大、适用于高级开发者的 JS 技术。

JavaScript 因其灵活性获得了巨大普及,并成为世界上使用最为广泛的编程语言。JS 通常被用于构建具有高交互性的动态 Web 应用程序 —— 例如实时更新、直观、功能丰富的用户界面等。此外,JavaScript 还允许应用程序跨平台运行。

JS 可用于各种项目,例如为电子商务服务提供支持或制作动画和手机游戏。然而,这只是 JavaScript 能力的一个缩影。我们还看到 JS 被用于企业环境中,特别是在关键的 ERP 过程中,如 SAP 人员增补,它允许在原生 Web 平台之上创建自定义仪表盘和 UI。

许多领先的平台,如 Facebook,使用了开源用户界面框架 React Native,它就是基于 JavaScript 构建的。这使得他们能够在使用单一代码库的情况下构建可同时在 iOS 和 Android (甚至是 Apple Vision Pro)上运行的移动应用程序。其结果就是开发时间大大缩短,使用的资源更少,所有平台和设备上的用户体验都保持一致。

服务器端运行时环境(如 Node.js)让 JavaScript 可以在 Web 浏览器之外运行,这进一步提升了应用程序的可扩展性和部署可能性。为了使 JS 更加通用和强大,大量 JS 兼容的 API 将 Web 应用程序链接到了外部服务。

最后,JavaScript 生态系统有了众多强大的库和框架,这有助于简化和加速开发,使开发者能够选择预先写好的代码来执行特定的功能。

我们选择了开发者在使用的五种前沿的 JavaScript 技术,希望可以帮你解决一些开发问题,构建更有效、用户友好的应用程序。

单子可用于组合需要上下文的函数,并返回一个值,它在简化错误管理和减少意外结果方面非常有效。

单子就是让代码中的函数组合变得尽可能简单。它们通常用于构建对精度要求很高的企业级应用程序。单子使代码更易于管理,从而可以实现更复杂的回调、嵌套条件分支等。本质上,单子就是让代码中的函数组合尽可能简单。

单子可以分为三种类型的函数组合:

函数映射:a => b

带上下文的函数映射:Functor(a) => Functor(b)

单子扁平化(从上下文中解包值)并带上下文的函数映射:Monad(Monad(a)) => Monad(b)

函数组合是创建函数管道的基础,可以实现高效的数据流。管道的第一个阶段是输入,最后一个阶段是经过转换的输出。为了实现管道,每一个阶段都必须能够预测到前一个阶段将返回的数据类型。

这时候单子就可以发挥作用,它们能够有效地映射函数并创建智能的管道。它们 与 Promise 的工作方式类似,并且可以无缝地放在一起使用。

下面是一个使用单子从 异步 API 获取用户数据,然后将用户数据传给另一个异步 API 执行计算的示例:

复制代码

当开发者希望代码更简洁、更具表达性时,通常会使用声明式方法。JavaScript 的声明式编程关注的是代码的总体目标,而不是如何实现这些目标。这使得代码更简单、更易读,也更易于维护。当开发者希望代码更简洁、更具表达性以快速交付项目时,通常会使用声明式方法。

我们将声明式方法与命令式方法做一番比较:

命令式:

复制代码

声明式:

复制代码

服务器端缓存可用于根据使用情况自动伸缩资源。

缓存并不是什么新鲜事物,也不会被认为是什么前沿技术,但由于客户端和服务器端 Web 应用程序都可以使用缓存,因此它成了一个强大的提升性能的工具,特别是服务器端缓存可以通过加速数据检索来提高 Node.js 的性能。

我们来看一个使用内存缓存技术的例子:

复制代码

服务器端缓存可以用于根据使用情况自动伸缩资源。AWS Lambda、Azure Functions 或 Google Cloud Functions 可以通过编程动态调整服务,而 AWS JavaScript SDK 允许你监控使用情况、优化云成本和自动伸缩资源,确保只为所需资源付费。

不可变性是指不能被改变的东西。在 JavaScript(以及一般的编程)中,它指的是在设置后就不能被修改的值。由于应用程序不断变化和更新,不可变性看起来似乎是不必要的 —— 但事实并非如此。

不可变性可以减少调试和意外结果。

数据的不可变性很重要,因为它有助于通过代码库实现一致性,并有助于状态管理。创建新值,而不是修改已存在的值,这让事情变得更可预测,从而减少错误 —— 比如当数据结构被意外修改时发生的错误。这样可以减少调试和意外结果。

将不可变性用于命名变量的示例:

复制代码

不可变性是一项重要的技术,已经越来越多地被用在数据科学任务和人工智能项目中,这再次证明 JavaScript 无法处理的问题越来越少了

模式匹配是一种条件分支,它可以在绑定变量的同时简洁地匹配数据结构模式。在编写 XSLT 样式表转换 XML 文档时,通常可以使用模式匹配。

模式匹配比标准的 switch 语句高效得多。

当需要匹配一个值与给定模式时,模式匹配比标准的 switch 语句更加高效,它提供了更多的控制,让开发者可以编写更复杂的表达式。

下面是使用 JUnify 库实现阶乘函数的示例,其中就用到了匹配模块:

复制代码

JavaScript 不仅灵活、多功能性,还可以部署在各种平台上。通过使用上述技术,开发者可以为他们的应用程序开发出功能强大且简洁的代码。

原文链接:

https://thenewstack.io/top-5-cutting-edge-javascript-techniques/

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

原文链接:

一文读懂 JavaScript 和 Python 九大语义区别

作者 | Ruqayyah Sara

译者 | 弯月,责编 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

我是一名全栈开发。前几天我一直在研究算法和数据结构,因为对于程序员而言,最重要能力的就是解决问题,所有任何程序员都应该拥有强大的解决问题的基础能力。

两天前我开始学习Python,开始对这门语言有了更多的理解。我开始将其与JavaScript进行比较,因为JavaScript是我日常工作中使用的语言。

JavaScript和Python是两门非常重要的语言。尽管包括我在内的许多人都知道Python或JavaScript,但我们并不清楚两种语言之间的重要区别。

我注意到这两门年语言有许多语义上的区别,相信理解这些区别对我和对其他人都有很大帮助。在本文中,我会比较我在两门语言中遇到的一些基础概念。所以,如果你熟悉JavaScript或Python,想了解二者的差异,那么你就来对地方了!

JavaScript

使用双斜线(//)作为单行注释,/* */ 作为多行注释。

Python

使用 # 作为单行注释,使用三引号\”\”\” \”\”\” 作为多行注释。

JavaScript

JavaScript中的每个代码块都必须放在花括号({})中,每条语句必须使用分号 ; 结束。

Python

Python中的代码块使用缩进表示。它不使用花括号或圆括号,而是使用空白。每条语句都需要换行。

a = 2

if a>0:

print(\”Positive\”)

else:

print(\”negative\”)

print(\”does not belong to else block\”)

数据类型

我无法在本文中完整地讨论JavaScript和Python之间的数据类型差异,这里我们只讨论主要的差异。

基本数据类型

  • 上面的表格展示了JavaScript和Python的基本数据类型。JavaScript中的Number类型表示Int和float值,由编译器在运行时确定。而JavaScript(ES10)中的BigInt用于存储大整数,而Python使用Int表示所有尺寸的整数。

  • JS使用关键字表示空值,Python使用None。

  • Python没有undefined和symbol的概念,这些是JavaScript特有的。

  • Python有一种特殊的数据类型——complex,用于表示复数 x + yj,其中x是实部,y是虚部。

非基本数据类型

  • 上图展示了复杂的(或者叫做非基本)数据类型。Python中的列表能存储任何数据类型,与JavaScript一样。

  • 但是Python中的数组可以使用库(如NumPy,array)来定义。Python中的数组只能包含统一数据类型。Python中的列表和数组有很大区别。数组上可以执行多种数学操作,而列表不能。

  • JavaScript中的对象类似于Python中的字典。两者都包含键值对。但对象是JavaScript中的基本组成部分,而字典在Python中只不过是个数据容器。

  • Python中的元组是一个不可修改的列表。用元组表示的列表无法被重新定义。而JavaScript没有这个概念。

  • 因此,Python拥有内置的哈希表(字典),而JavaScript没有内置的哈希表、方法或库。

JavaScript

在JavaScript中定义变量需要使用三种主要的关键字:var,let和const。定义方法决定了变量的使用方式(以及作用域)。

Python

Python中定义变量不需要使用关键字,只需要给变量名直接赋值即可:

If-Else

JavaScript

JavaScript中的条件语句是 if、else if、else还有switch。

Python

Python中的条件语句是if、elif和else。

elif是else-if的缩写。Python没有switch语句。相反,可以用字典来代替。

JavaScript

JavaScript的三元运算符(?:)是一个条件运算符,语法为(condition)?(expresssionIfTrue):(expressionIfFalse):

Python

Python中的三元运算符的语法是 (expressionIfTrue) if (condition) else (expressionIfFalse)

a, b = 10, 20

min = a if a < b else b

print(min)

全等运算符

JavaScript

全等运算符(===)也叫“严格相等运算符”,会比较两个运算数并检查其相等性,而不会进行类型转换,也就是说,它会检查运算数的数据类型。返回值为布尔。JavaScript只有一个全等运算符。

Python

Python有两个全等运算符:is 和 is not。

is 运算符会测试两个运算数是否为同一个对象,is not为is的反面。

x = 5

if (type(x) is int):

print (\”true\”) # true

if ( type(x) is not int):

print (\”true\”)

成员运算符

JavaScript

成员运算符检查对象中的特定属性。JavaScript只有一个成员运算符:in。

Python

成员运算符用于验证某个值是否为成员。Python有两个成员运算符:in和not in。

x = 24

y = 20

list = [10, 20, 30, 40, 50 ]

if ( x not in list ):

print (\”not present\”) # Output:True

循环

JavaScript

JavaScript有三种循环:

  • 入口控制循环:for和while(在执行循环语句之前测试条件)

  • 出口控制循环:do-while(执行循环语句之后测试条件)

Python

Python有两种循环:for和while。Python没有内置的do-while循环。

Python的while循环与JavaScript的for循环类似。例如下面的例子:

Python不支持++和–运算符。我们需要使用x+=1和x-=1。

for循环用来遍历序列(列表、数组和元组)。它使用in操作符和range函数进行迭代。可以用range生成一系列数字,该函数接受三个参数:start,stop和step。

  • start:开始的位置(可选)。默认为0。

  • stop:结束的位置(必须指定)。

  • step:指定序列中两个数字之间的间隔(可选)。

以上就是我注意到的最基本的JavaScript和Python之间的语义区别。

原文链接:https://medium.com/better-programming/semantic-differences-between-javascript-and-python-ed21b1f3ce50

本文为 CSDN 翻译,

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。