病毒来了,程序员也要学习!而你的电脑还没有被感染。
Node.js 以JavaScript 和V8 引擎为中心,凭借其事件驱动的架构和开箱即用的可扩展性,已迅速成为创建Web 应用程序和SaaS 产品的新事实标准。许多框架,例如Express、Sails 和Socket.IO,允许程序员只关注业务逻辑,而无需考虑其他问题。
当然,Node.js 目前不如JavaScript 流行。 JavaScript 支持不同风格的编程,例如函数式编程、过程式编程和面向对象编程,使程序员能够灵活地应用不同的编程风格。
但JavaScript 是一把双刃剑,其多面性意味着几乎一切都可以改变。因此,在编写Node.js 代码时,程序员无法清除对象和范围突变的可能性。由于JavaScript 缺乏尾部调用优化(允许递归函数在递归调用时重用堆栈帧),因此使用递归进行大量迭代是有风险的。除了这些缺陷之外,Node.js 是单线程的,这迫使开发人员编写异步代码。
以下是编写高效且可扩展的Node.js 代码的10 个最重要的JavaScript 概念。
1. 立即调用函数表达式
立即调用函数表达式(IIFE) 是创建后立即执行的函数。它与事件或异步执行无关。 IIFE 可以定义为:
第一对括号function() {.} 将括号内的代码转换为表达式。第二对括号调用表达式生成的函数。 IIFE也可以称为自调用匿名函数。最常用于通过var 限制上下文变量的范围或封装上下文变量以避免名称冲突。
2. 关闭
JavaScript 中的闭包是一个内部函数,即使在外部函数返回后也可以访问外部函数的作用域。闭包使内部函数变量成为私有的。一个简单的例子是:
计数变量被分配了一个外部函数。该函数仅运行一次,将计数器设置为0,并返回内部函数。 _counter 变量只能由内部函数访问,因此它的行为类似于私有变量。
3.原型
每个JavaScript 函数都有附加属性和方法的原型。该属性是不可枚举的,允许程序员将方法和成员函数附加到对象。 JavaScript 仅支持通过prototype 属性进行继承。对于继承的对象,原型指向父对象。将方法附加到函数的常见方法是通过原型,如下所示。
4.使用私有属性、闭包
JavaScript 允许程序员使用下划线前缀定义私有属性,如上面的示例所示。但是,这可能会阻止用户直接访问或修改私有属性。使用闭包定义私有属性可以解决这个问题。您可以使用闭包创建私有属性,如下所示:
5. 模块模式
模块模式是JavaScript 中最常用的设计模式,用于实现松散耦合、结构良好的代码。 这允许程序员创建两个访问级别:公共和私有。实现模块模式的一种方法如下。
显示模块模式与模块模式类似。上面的例子是使用Revealing Module模式编写的,如下:
6. 提升
JavaScript 在执行代码之前将变量和函数声明移动到作用域的顶部。无论程序员将函数或变量声明放在代码中的何处,解释器都会将它们移动到作用域的开头。这可能是好事,也可能不是好事。
变量声明在代码执行之前进行处理。讽刺的是,未声明的变量在被赋值之前并不存在,因此所有未声明的变量都成为全局变量,函数声明已经挂起,但函数表达式却没有。提升变量和函数时首选JavaScript。优先顺序是变量赋值、函数声明、变量声明。为了避免错误,程序员应该在每个作用域的开头声明变量和函数。
7.咖喱
柯里化是一种使函数更加灵活的方法。柯里化函数允许程序员传递函数期望的所有参数并获取结果,或者仅传递一些参数并接收其余参数。一个简单的例子是:
原始函数可以将参数直接一一传递到单独的括号中,如下所示:
8. 方法的申请、调用、绑定
JavaScript 程序员需要理解apply、call 和bind 之间的区别。这三个函数的相似之处在于第一个参数总是给出“this”值,或者调用方法函数的上下文。 call 是三者中最简单的,并且与调用者的函数上下文相同。一个例子如下所示。
apply 和call 几乎一样。唯一的区别是参数作为数组传递,而不是单独传递。数组在JavaScript 中更容易操作,为您提供了更多使用函数的可能性。这是使用apply 和call 的示例。
绑定方法允许您将参数传递给函数而不调用该函数。返回一个新函数,其参数在任何其他参数之前受到限制。一个例子是:
9. 记忆
记忆化是一种优化技术,可以加快函数执行速度,并在同一组输入再次出现时返回缓存的结果。 JavaScript 对象的行为类似于关联数组,这使得JavaScript 更容易记住。例如,您可以将递归阶乘函数转换为记忆阶乘函数,如下所示:
10.方法重载
方法重载允许多个方法具有相同的名称但不同的参数。编译器或解释器根据传递的参数数量决定调用哪个函数。 JavaScript 不直接支持方法重载。但是,您可以完成这样的事情:
如果您足够了解Node.js,您会发现很多方法来解决您遇到的几乎所有问题,但您需要采取正确的方法。否则,您可能必须重写整个逻辑。本文中的10 个JavaScript 概念是每个Node.js 开发人员都应该了解的基础知识。但这只是冰山一角。希望程序员不断学习。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。