Table of Contents for
Eloquent JavaScript, 3rd Edition

Version ebook / Retour

Cover image for bash Cookbook, 2nd Edition Eloquent JavaScript, 3rd Edition by Marijn Haverbeke Published by No Starch Press, 2018
  1. Cover Page
  2. Eloquent JavaScript: A Modern Introduction to Programming
  3. Title Page
  4. Copyright Page
  5. BRIEF CONTENTS
  6. CONTENTS IN DETAIL
  7. Dedication
  8. Eloquent JavaScript: A Modern Introduction to Programming
  9. INTRODUCTION
  10. PART I: LANGUAGE
  11. Eloquent JavaScript: A Modern Introduction to Programming
  12. 1 VALUES, TYPES, AND OPERATORS
  13. Eloquent JavaScript: A Modern Introduction to Programming
  14. 2 PROGRAM STRUCTURE
  15. Eloquent JavaScript: A Modern Introduction to Programming
  16. 3 FUNCTIONS
  17. Eloquent JavaScript: A Modern Introduction to Programming
  18. 4 DATA STRUCTURES: OBJECTS AND ARRAYS
  19. Eloquent JavaScript: A Modern Introduction to Programming
  20. 5 HIGHER-ORDER FUNCTIONS
  21. Eloquent JavaScript: A Modern Introduction to Programming
  22. 6 THE SECRET LIFE OF OBJECTS
  23. Eloquent JavaScript: A Modern Introduction to Programming
  24. 7 PROJECT: A ROBOT
  25. Eloquent JavaScript: A Modern Introduction to Programming
  26. 8 BUGS AND ERRORS
  27. Eloquent JavaScript: A Modern Introduction to Programming
  28. 9 REGULAR EXPRESSIONS
  29. Eloquent JavaScript: A Modern Introduction to Programming
  30. 10 MODULES
  31. Eloquent JavaScript: A Modern Introduction to Programming
  32. 11 ASYNCHRONOUS PROGRAMMING
  33. Eloquent JavaScript: A Modern Introduction to Programming
  34. 12 PROJECT: A PROGRAMMING LANGUAGE
  35. PART II: BROWSER
  36. Eloquent JavaScript: A Modern Introduction to Programming
  37. 13 JAVASCRIPT AND THE BROWSER
  38. Eloquent JavaScript: A Modern Introduction to Programming
  39. 14 THE DOCUMENT OBJECT MODEL
  40. Eloquent JavaScript: A Modern Introduction to Programming
  41. 15 HANDLING EVENTS
  42. Eloquent JavaScript: A Modern Introduction to Programming
  43. 16 PROJECT: A PLATFORM GAME
  44. Eloquent JavaScript: A Modern Introduction to Programming
  45. 17 DRAWING ON CANVAS
  46. Eloquent JavaScript: A Modern Introduction to Programming
  47. 18 HTTP AND FORMS
  48. Eloquent JavaScript: A Modern Introduction to Programming
  49. 19 PROJECT: A PIXEL ART EDITOR
  50. PART III: NODE
  51. Eloquent JavaScript: A Modern Introduction to Programming
  52. 20 NODE.JS
  53. Eloquent JavaScript: A Modern Introduction to Programming
  54. 21 PROJECT: SKILL-SHARING WEBSITE
  55. Eloquent JavaScript: A Modern Introduction to Programming
  56. 22 JAVASCRIPT AND PERFORMANCE
  57. EXERCISE HINTS
  58. INDEX
  59. Eloquent JavaScript: A Modern Introduction to Programming
  60. Eloquent JavaScript: A Modern Introduction to Programming
  61. Eloquent JavaScript: A Modern Introduction to Programming

CONTENTS IN DETAIL

INTRODUCTION

On Programming

Why Language Matters

What Is JavaScript?

Code, and What to Do with It

Overview of This Book

Typographic Conventions

PART I: LANGUAGE

1
VALUES, TYPES, AND OPERATORS

Values

Numbers

Arithmetic

Special Numbers

Strings

Unary Operators

Boolean Values

Comparison

Logical Operators

Empty Values

Automatic Type Conversion

Short-Circuiting of Logical Operators

Summary

2
PROGRAM STRUCTURE

Expressions and Statements

Bindings

Binding Names

The Environment

Functions

The console.log Function

Return Values

Control Flow

Conditional Execution

while and do Loops

Indenting Code

for Loops

Breaking Out of a Loop

Updating Bindings Succinctly

Dispatching on a Value with switch

Capitalization

Comments

Summary

Exercises

Looping a Triangle

FizzBuzz

Chessboard

3
FUNCTIONS

Defining a Function

Bindings and Scopes

Nested Scope

Functions as Values

Declaration Notation

Arrow Functions

The Call Stack

Optional Arguments

Closure

Recursion

Growing Functions

Functions and Side Effects

Summary

Exercises

Minimum

Recursion

Bean Counting

4
DATA STRUCTURES: OBJECTS AND ARRAYS

The Weresquirrel

Data Sets

Properties

Methods

Objects

Mutability

The Lycanthrope’s Log

Computing Correlation

Array Loops

The Final Analysis

Further Arrayology

Strings and Their Properties

Rest Parameters

The Math Object

Destructuring

JSON

Summary

Exercises

The Sum of a Range

Reversing an Array

A List

Deep Comparison

5
HIGHER-ORDER FUNCTIONS

Abstraction

Abstracting Repetition

Higher-Order Functions

Script Data Set

Filtering Arrays

Transforming with map

Summarizing with reduce

Composability

Strings and Character Codes

Recognizing Text

Summary

Exercises

Flattening

Your Own Loop

Everything

Dominant Writing Direction

6
THE SECRET LIFE OF OBJECTS

Encapsulation

Methods

Prototypes

Classes

Class Notation

Overriding Derived Properties

Maps

Polymorphism

Symbols

The Iterator Interface

Getters, Setters, and Statics

Inheritance

The instanceof Operator

Summary

Exercises

A Vector Type

Groups

Iterable Groups

Borrowing a Method

7
PROJECT: A ROBOT

Meadowfield

The Task

Persistent Data

Simulation

The Mail Truck’s Route

Pathfinding

Exercises

Measuring a Robot

Robot Efficiency

Persistent Group

8
BUGS AND ERRORS

Language

Strict Mode

Types

Testing

Debugging

Error Propagation

Exceptions

Cleaning Up After Exceptions

Selective Catching

Assertions

Summary

Exercises

Retry

The Locked Box

9
REGULAR EXPRESSIONS

Creating a Regular Expression

Testing for Matches

Sets of Characters

Repeating Parts of a Pattern

Grouping Subexpressions

Matches and Groups

The Date Class

Word and String Boundaries

Choice Patterns

The Mechanics of Matching

Backtracking

The replace Method

Greed

Dynamically Creating RegExp Objects

The search Method

The lastIndex Property

Looping Over Matches

Parsing an INI File

International Characters

Summary

Exercises

Regexp Golf

Quoting Style

Numbers Again

10
MODULES

Modules as Building Blocks

Packages

Improvised Modules

Evaluating Data as Code

CommonJS

ECMAScript Modules

Building and Bundling

Module Design

Summary

Exercises

A Modular Robot

Roads Module

Circular Dependencies

11
ASYNCHRONOUS PROGRAMMING

Asynchronicity

Crow Tech

Callbacks

Promises

Failure

Networks Are Hard

Collections of Promises

Network Flooding

Message Routing

Async Functions

Generators

The Event Loop

Asynchronous Bugs

Summary

Exercises

Tracking the Scalpel

Building Promise.all

12
PROJECT: A PROGRAMMING LANGUAGE

Parsing

The Evaluator

Special Forms

The Environment

Functions

Compilation

Cheating

Exercises

Arrays

Closure

Comments

Fixing Scope

PART II: BROWSER

13
JAVASCRIPT AND THE BROWSER

Networks and the Internet

The Web

HTML

HTML and JavaScript

In the Sandbox

Compatibility and the Browser Wars

14
THE DOCUMENT OBJECT MODEL

Document Structure

Trees

The Standard

Moving Through the Tree

Finding Elements

Changing the Document

Creating Nodes

Attributes

Layout

Styling

Cascading Styles

Query Selectors

Positioning and Animating

Summary

Exercises

Build a Table

Elements by Tag Name

The Cat’s Hat

15
HANDLING EVENTS

Event Handlers

Events and DOM Nodes

Event Objects

Propagation

Default Actions

Key Events

Pointer Events

Mouse Clicks

Mouse Motion

Touch Events

Scroll Events

Focus Events

Load Event

Events and the Event Loop

Timers

Debouncing

Summary

Exercises

Balloon

Mouse Trail

Tabs

16
PROJECT: A PLATFORM GAME

The Game

The Technology

Levels

Reading a Level

Actors

Encapsulation as a Burden

Drawing

Motion and Collision

Actor Updates

Tracking Keys

Running the Game

Exercises

Game Over

Pausing the Game

A Monster

17
DRAWING ON CANVAS

SVG

The Canvas Element

Lines and Surfaces

Paths

Curves

Drawing a Pie Chart

Text

Images

Transformation

Storing and Clearing Transformations

Back to the Game

Choosing a Graphics Interface

Summary

Exercises

Shapes

The Pie Chart

A Bouncing Ball

Precomputed Mirroring

18
HTTP AND FORMS

The Protocol

Browsers and HTTP

Fetch

HTTP Sandboxing

Appreciating HTTP

Security and HTTPS

Form Fields

Focus

Disabled Fields

The Form as a Whole

Text Fields

Checkboxes and Radio Buttons

Select Fields

File Fields

Storing Data Client-Side

Summary

Exercises

Content Negotiation

A JavaScript Workbench

Conway’s Game of Life

19
PROJECT: A PIXEL ART EDITOR

Components

The State

DOM Building

The Canvas

The Application

Drawing Tools

Saving and Loading

Undo History

Let’s Draw

Why Is This So Hard?

Exercises

Keyboard Bindings

Efficient Drawing

Circles

Proper Lines

PART III: NODE

20
NODE.JS

Background

The node Command

Modules

Installing with NPM

Package Files

Versions

The File System Module

The HTTP Module

Streams

A File Server

Summary

Exercises

Search Tool

Directory Creation

A Public Space on the Web

21
PROJECT: SKILL-SHARING WEBSITE

Design

Long Polling

HTTP Interface

The Server

Routing

Serving Files

Talks as Resources

Long Polling Support

The Client

HTML

Actions

Rendering Components

Polling

The Application

Exercises

Disk Persistence

Comment Field Resets

22
JAVASCRIPT AND PERFORMANCE

Staged Compilation

Graph Layout

Defining a Graph

Force-Directed Layout

Avoiding Work

Profiling

Function Inlining

Creating Less Garbage

Garbage Collection

Dynamic Types

Summary

Exercises

Pathfinding

Timing

Optimizing

EXERCISE HINTS

Chapter 2: Program Structure

Looping a Triangle

FizzBuzz

Chessboard

Chapter 3: Functions

Minimum

Recursion

Bean Counting

Chapter 4: Data Structures: Objects and Arrays

The Sum of a Range

Reversing an Array

A List

Deep Comparison

Chapter 5: Higher-Order Functions

Everything

Dominant Writing Direction

Chapter 6: The Secret Life of Objects

A Vector Type

Groups

Iterable Groups

Borrowing a Method

Chapter 7: Project: A Robot

Measuring a Robot

Robot Efficiency

Persistent Group

Chapter 8: Bugs and Errors

Retry

The Locked Box

Chapter 9: Regular Expressions

Quoting Style

Numbers Again

Chapter 10: Modules

A Modular Robot

Roads Module

Circular Dependencies

Chapter 11: Asynchronous Programming

Tracking the Scalpel

Building Promise.all

Chapter 12: Project: A Programming Language

Arrays

Closure

Comments

Fixing Scope

Chapter 14: The Document Object Model

Build a Table

Elements by Tag Name

The Cat’s Hat

Chapter 15: Handling Events

Balloon

Mouse Trail

Tabs

Chapter 16: Project: A Platform Game

Pausing the Game

A Monster

Chapter 17: Drawing on Canvas

Shapes

The Pie Chart

A Bouncing Ball

Precomputed Mirroring

Chapter 18: HTTP and Forms

Content Negotiation

A JavaScript Workbench

Conway’s Game of Life

Chapter 19: Project: A Pixel Art Editor

Keyboard Bindings

Efficient Drawing

Circles

Proper Lines

Chapter 20: Node.js

Search Tool

Directory Creation

A Public Space on the Web

Chapter 21: Project: Skill-Sharing Website

Disk Persistence

Comment Field Resets

Chapter 22: JavaScript and Performance

Pathfinding

Optimizing

INDEX