事件驱动编程/异步编程——当事件发生时由系统调用的函数来取代应用返回值的编程风格,这个nodejs的显著特征之一。优点是I/O操作可以并行,操作结束之后分别调用其回调函数即可。
nodejs为什么选择JavaScript实现事件驱动编程——JavaScript具有闭包和第一类函数的特点:
JavaScript中函数是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一类函数(First-class Function)。不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个Function类的实例(instance)。这样的多重身份让JavaScript的函数变得非常重要。
闭包就是函数,但是它可以基础并访问它自身被声明的那个作用域里的变量。一个回调函数作为参数传递给另一个I/O函数时,它同时会记住上下文,并可以访问上下文里的所有变量。