首页 > 自考资讯 > 自考知识

javascript特点不包括,javascript脚本语言的前身是

头条共创 2024-06-27

病毒来了,程序员也要学习!而你的电脑还没有被感染。

Node.js 以JavaScript 和V8 引擎为中心,凭借其事件驱动的架构和开箱即用的可扩展性,已迅速成为创建Web 应用程序和SaaS 产品的新事实标准。许多框架,例如Express、Sails 和Socket.IO,允许程序员只关注业务逻辑,而无需考虑其他问题。

212e00028a48b87e791a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=qGRCaadX5vEeNEG03VT1wvx9aOI%3D

当然,Node.js 目前不如JavaScript 流行。 JavaScript 支持不同风格的编程,例如函数式编程、过程式编程和面向对象编程,使程序员能够灵活地应用不同的编程风格。

但JavaScript 是一把双刃剑,其多面性意味着几乎一切都可以改变。因此,在编写Node.js 代码时,程序员无法清除对象和范围突变的可能性。由于JavaScript 缺乏尾部调用优化(允许递归函数在递归调用时重用堆栈帧),因此使用递归进行大量迭代是有风险的。除了这些缺陷之外,Node.js 是单线程的,这迫使开发人员编写异步代码。

以下是编写高效且可扩展的Node.js 代码的10 个最重要的JavaScript 概念。

1. 立即调用函数表达式

立即调用函数表达式(IIFE) 是创建后立即执行的函数。它与事件或异步执行无关。 IIFE 可以定义为:

212e00028a5da8a37d73~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=Si9IVJwdQQmKewgwY5MqDYsqeKc%3D

第一对括号function() {.} 将括号内的代码转换为表达式。第二对括号调用表达式生成的函数。 IIFE也可以称为自调用匿名函数。最常用于通过var 限制上下文变量的范围或封装上下文变量以避免名称冲突。

2. 关闭

JavaScript 中的闭包是一个内部函数,即使在外部函数返回后也可以访问外部函数的作用域。闭包使内部函数变量成为私有的。一个简单的例子是:

1f8c00065dd2bf2727a8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=L5lbbUumJDDwfyscm1q77Jfcg1A%3D

计数变量被分配了一个外部函数。该函数仅运行一次,将计数器设置为0,并返回内部函数。 _counter 变量只能由内部函数访问,因此它的行为类似于私有变量。

3.原型

每个JavaScript 函数都有附加属性和方法的原型。该属性是不可枚举的,允许程序员将方法和成员函数附加到对象。 JavaScript 仅支持通过prototype 属性进行继承。对于继承的对象,原型指向父对象。将方法附加到函数的常见方法是通过原型,如下所示。

21300002b9b149e4688f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=m1epzdaWjA8fgDkOufMoou9UAMQ%3D

4.使用私有属性、闭包

JavaScript 允许程序员使用下划线前缀定义私有属性,如上面的示例所示。但是,这可能会阻止用户直接访问或修改私有属性。使用闭包定义私有属性可以解决这个问题。您可以使用闭包创建私有属性,如下所示:

21300002b9d8ff0be0bd~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=VkuV32ulbYp0PATZ53At3fwsFtU%3D

5. 模块模式

模块模式是JavaScript 中最常用的设计模式,用于实现松散耦合、结构良好的代码。 这允许程序员创建两个访问级别:公共和私有。实现模块模式的一种方法如下。

21310002a11793f7d926~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=0QMsWR8fhTYHvNsyH0BulCH%2FI64%3D

显示模块模式与模块模式类似。上面的例子是使用Revealing Module模式编写的,如下:

212c0002ba214b8cf0c0~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=MuniSOI6%2BXpDuV8r%2BKtpPmoEI1I%3D

6. 提升

JavaScript 在执行代码之前将变量和函数声明移动到作用域的顶部。无论程序员将函数或变量声明放在代码中的何处,解释器都会将它们移动到作用域的开头。这可能是好事,也可能不是好事。

变量声明在代码执行之前进行处理。讽刺的是,未声明的变量在被赋值之前并不存在,因此所有未声明的变量都成为全局变量,函数声明已经挂起,但函数表达式却没有。提升变量和函数时首选JavaScript。优先顺序是变量赋值、函数声明、变量声明。为了避免错误,程序员应该在每个作用域的开头声明变量和函数。

7.咖喱

柯里化是一种使函数更加灵活的方法。柯里化函数允许程序员传递函数期望的所有参数并获取结果,或者仅传递一些参数并接收其余参数。一个简单的例子是:

21310002a1519a374d1f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=g2gyD9gr4CsXCOoXLMcpzS9ophw%3D

原始函数可以将参数直接一一传递到单独的括号中,如下所示:

21310002a1709a85c02b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=%2Fx17RpY8XVBWIprUUZlSA1mrNRU%3D

8. 方法的申请、调用、绑定

JavaScript 程序员需要理解apply、call 和bind 之间的区别。这三个函数的相似之处在于第一个参数总是给出“this”值,或者调用方法函数的上下文。 call 是三者中最简单的,并且与调用者的函数上下文相同。一个例子如下所示。

1f8e00065f15c06b4bd1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=Cmi%2Bw12y9B8M6gQERDoMVjK3xJQ%3D

apply 和call 几乎一样。唯一的区别是参数作为数组传递,而不是单独传递。数组在JavaScript 中更容易操作,为您提供了更多使用函数的可能性。这是使用apply 和call 的示例。

1f8e00065f44afa69850~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=xPguFXNib1GwRjMPSMV%2B2EtKV%2Bs%3D

绑定方法允许您将参数传递给函数而不调用该函数。返回一个新函数,其参数在任何其他参数之前受到限制。一个例子是:

1f8500065adac40ef7b5~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=R9yTzS0c%2B5f9%2BRF2aCZRNOCtefs%3D

9. 记忆

记忆化是一种优化技术,可以加快函数执行速度,并在同一组输入再次出现时返回缓存的结果。 JavaScript 对象的行为类似于关联数组,这使得JavaScript 更容易记住。例如,您可以将递归阶乘函数转换为记忆阶乘函数,如下所示:

21300002baf290d4cb9c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=5j1waH%2FtwFxPxvlG%2BOhwb7JNd5U%3D

10.方法重载

方法重载允许多个方法具有相同的名称但不同的参数。编译器或解释器根据传递的参数数量决定调用哪个函数。 JavaScript 不直接支持方法重载。但是,您可以完成这样的事情:

1f8e00065f88528f3e50~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720092765&x-signature=%2BXMY4581yeXkKjVwj8p9YriUALA%3D

如果您足够了解Node.js,您会发现很多方法来解决您遇到的几乎所有问题,但您需要采取正确的方法。否则,您可能必须重写整个逻辑。本文中的10 个JavaScript 概念是每个Node.js 开发人员都应该了解的基础知识。但这只是冰山一角。希望程序员不断学习。

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢