[1] The name cons stands for construct. The names car and cdr derive from the original implementation of Lisp on the IBM 704. That machine had an addressing scheme that allowed one to reference the address and decrement parts of a memory location. Car stands for Contents of Address part of Register and cdr (pronounced could-er) stands for Contents of Decrement part of Register.
[2] Another way to define the selectors and constructor is
Original JavaScript
(define make-rat cons) (define numer car) (define denom cdr) const make_rat = pair; const numer = head; const denom = tail;
The first definition associates the name make-rat make_rat with the value of the expression cons, pair, which is the primitive procedure function that constructs pairs. Thus make-rat make_rat and cons pair are names for the same primitive constructor.

Defining selectors and constructors in this way is efficient: Instead of make-rat make_rat calling cons, pair, make-rat make_rat is cons, pair, so there is only one procedure function called, not two, when make-rat make_rat is called. On the other hand, doing this defeats debugging aids that trace procedure function calls or put breakpoints on procedure function calls: You may want to watch make-rat make_rat being called, but you certainly don't want to watch every call to cons. pair.

We have chosen not to use this style of definition in this book.

[3] Display is the Scheme primitive for printing data. The Scheme primitive newline starts a new line for printing. Neither of these procedures returns a useful value, so in the uses of print-rat below, we show only what print-rat prints, not what the interpreter prints as the value returned by print-rat.
[4] In JavaScript, the operator + can also be applied to a string and a number and to other operand combinations, but in this book, we choose to apply it either to two numbers or to two strings.
[5] The primitive function display introduced in exercise 1.22 returns its argument, but in the uses of print_rat below, we show only what print_rat prints, not what the interpreter prints as the value returned by print_rat.
2.1.1   Example: Arithmetic Operations for Rational Numbers