Bacon.js is a JavaScript library for functional reactive programming (FRP). FRP combines functional programming, which uses immutable values and produces new outputs from inputs, and reactive programming, which is based on propagating data changes over time. Bacon.js uses EventStreams to represent collections of events over time that can be composed using functions like map, merge, scan, filter, and flatMap to manipulate the streams. Properties can also be created from EventStreams to represent values that change over time and can be assigned to DOM elements. The documentation and examples show how to build interactive applications using FRP principles in Bacon.js.