Speaking JavaScript
Speaking JavaScript
Table of contents
Preface
What You Need to Know About This Book
Notational Conventions
Describing syntax
Referring to methods
Command-line interaction
How to Contact Us
Acknowledgments
Preparing for JavaScript
Reviewers
Syntax
An Overview of the Syntax
Semicolons
Comments
Values
Primitive Values Versus Objects
Primitive Values
Objects
Booleans
Truthy and Falsy
Equality Operators
Numbers
Operators
Strings
String Operators
String Methods
Statements
Conditionals
Loops
Functions
Function Declarations Are Hoisted
Optional Parameters
Enforcing an Arity
Exception Handling
Strict Mode
Closures
Extracting Methods
Arrays
Array Literals
Array Methods
Regular Expressions
Method test(): Is There a Match?
Math
II. Background
2. Why JavaScript?
Is JavaScript Freely Available?
Is JavaScript Elegant?
Is JavaScript Useful?
Graphical User Interfaces
Conclusion
Elegant Parts
Influences
5. Standardization: ECMAScript
Comments
Statements
Legal Identifiers
Strict Mode
Switching on Strict Mode
8. Values
JavaScripts Type System
JavaScripts Types
Coercion
Primitive Values
Objects
Changing undefined
Type Coercion
Type Coercion Can Hide Bugs
9. Operators
Operators and Objects
Assignment Operators
Compound Assignment Operators
Ordering Operators
The Algorithm
Special Operators
The Conditional Operator ( ? : )
Object Operators
10. Booleans
Converting to Boolean
Manually Converting to Boolean
Logical Operators
Binary Logical Operators: And (&&) and Or (||)
Logical Or (||)
11. Numbers
Number Literals
Exponent
Converting to Number
Manually Converting to Number
parseFloat()
Infinity
Two Zeros
Integers in JavaScript
Ranges of Integers
Safe Integers
Converting to Integer
Integers via Math.floor(), Math.ceil(), and Math.round()
Arithmetic Operators
Bitwise Operators
Background Knowledge
Number.prototype.toPrecision(precision?)
Number.prototype.toString(radix?)
Number.prototype.toExponential(fractionDigits?)
12. Strings
String Literals
Character Access
Converting to String
Manually Converting to String
Comparing Strings
Concatenating Strings
Concatenation: The Plus (+) Operator
Transform
13. Statements
Declaring and Assigning Variables
Loops
Mechanisms to Be Used with Loops
while
do-while
for
for-in
for each-in
Conditionals
if-then-else
switch
try-catch-finally
Examples
Error Constructors
Stack Traces
15. Functions
The Three Roles of Functions in JavaScript
Defining Functions
Function Expressions
Function Declarations
Hoisting
func.apply(thisValue, argArray)
Optional Parameters
Named Parameters
Named Parameters as Descriptions
IIFE Applications
Global Variables
Best Practice: Avoid Creating Global Variables
Object Literals
Overriding
Examples
Property Descriptors
Copying an Object
Protecting Objects
Preventing Extensions
Sealing
Freezing
Overriding a Method
Making a Supercall
Object.prototype.toLocaleString()
Best Practices
18. Arrays
Overview
Arrays Are Maps, Not Tuples
Creating Arrays
The Array Constructor
Multidimensional Arrays
Array Indices
The in Operator and Indices
length
Manually Increasing the Length of an Array
Holes in Arrays
Creating Holes
Comparing Strings
Comparing Objects
Iteration (Nondestructive)
Examination Methods
Transformation Methods
Reduction Methods
Atoms: Groups
Quantifiers
Assertions
Disjunction
Flags
Replacement Is a String
Replacement Is a Function
20. Dates
The Date Constructor
21. Math
Math Properties
Numerical Functions
Trigonometric Functions
Other Functions
22. JSON
Background
Data Format
History
Grammar
JSON.parse(text, reviver?)
JSON.parse()
Error Constructors
Nonconstructor Functions
Encoding and Decoding Text
Best Practices
Conclusion
Simple Logging
Formatted Logging
Code Points
Unicode Encodings
Counting Characters
Unicode Normalization
Libraries
Syntactic Changes
New Methods
JSON
General Tips
Code Should Be Consistent
Dont Be Clever
Acceptable Cleverness
Controversial Rules
Syntax
Variables
Object Orientation
Miscellaneous
Conclusion
Caveats
Naming Types
Basic Tags
Documenting Classes
Defining a Class via a Constructor Function
Subclassing
30. Libraries
Shims Versus Polyfills
Further Reading
Package Managers
Index
Colophon
Copyright