JavaScript The Definitive Guide 7th Edition David Flanagan

yantzgurgawa 15 views 75 slides May 15, 2025
Slide 1
Slide 1 of 75
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75

About This Presentation

JavaScript The Definitive Guide 7th Edition David Flanagan
JavaScript The Definitive Guide 7th Edition David Flanagan
JavaScript The Definitive Guide 7th Edition David Flanagan


Slide Content

JavaScript The Definitive Guide 7th Edition
David Flanagan install download
https://ebookmeta.com/product/javascript-the-definitive-
guide-7th-edition-david-flanagan-4/
Download more ebook from https://ebookmeta.com

We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!
JavaScript The Definitive Guide 7th Edition David
Flanagan
https://ebookmeta.com/product/javascript-the-definitive-
guide-7th-edition-david-flanagan-3/
JavaScript The Definitive Guide 7th Edition David
Flanagan
https://ebookmeta.com/product/javascript-the-definitive-
guide-7th-edition-david-flanagan/
JavaScript The Definitive Guide 7th Edition David
Flanagan
https://ebookmeta.com/product/javascript-the-definitive-
guide-7th-edition-david-flanagan-2/
Downsizing For Dummies Ralph R. Roberts
https://ebookmeta.com/product/downsizing-for-dummies-ralph-r-
roberts/

Disability Definitions Diagnoses and Practice
Implications An Introduction for Counselors 1st Edition
Julie Smart
https://ebookmeta.com/product/disability-definitions-diagnoses-
and-practice-implications-an-introduction-for-counselors-1st-
edition-julie-smart/
Advances in Visual Computing 16th International
Symposium ISVC 2021 Virtual Event October 4 6 2021
Proceedings Part I Lecture Notes in Computer Science
George Bebis
https://ebookmeta.com/product/advances-in-visual-computing-16th-
international-symposium-isvc-2021-virtual-event-
october-4-6-2021-proceedings-part-i-lecture-notes-in-computer-
science-george-bebis/
The Fall of the Priests and the Rise of the Lawyers 1st
Edition Philip Wood
https://ebookmeta.com/product/the-fall-of-the-priests-and-the-
rise-of-the-lawyers-1st-edition-philip-wood/
A Democratic Nation Identity Freedom and Equality in
Australia 1901 1925 1st Edition David Kemp
https://ebookmeta.com/product/a-democratic-nation-identity-
freedom-and-equality-in-australia-1901-1925-1st-edition-david-
kemp/
Organ Specific Drug Delivery and Targeting to the Lungs
1st Edition Ajit S. Narang (Editor)
https://ebookmeta.com/product/organ-specific-drug-delivery-and-
targeting-to-the-lungs-1st-edition-ajit-s-narang-editor/

hapi.js in Action 1st Edition Matt Harrison
https://ebookmeta.com/product/hapi-js-in-action-1st-edition-matt-
harrison/

1 1. Preface
a. Conventions Used in This Book
b. Example Code
c. O’Reilly Online Learning
d. How to Contact Us
e. Acknowledgments
2. Introduction to JavaScript
a. 1.1 Exploring JavaScript
b. 1.2 Hello World
c. 1.3 A Tour of JavaScript
d. 1.4 Example: Character Frequency Histograms
e. 1.5 Summary
3. Lexical Structure
a. 2.1 The Text of a JavaScript Program
b. 2.2 Comments
c. 2.3 Literals
d. 2.4 Identifiers and Reserved Words
i. 2.4.1 Reserved Words
e. 2.5 Unicode
i. 2.5.1 Unicode Escape Sequences
ii. 2.5.2 Unicode Normalization
f. 2.6 Optional Semicolons
g. 2.7 Summary
4. Types, Values, and Variables
a. 3.1 Overview and Definitions
b. 3.2 Numbers
i. 3.2.1 Integer Literals
ii. 3.2.2 Floating-Point Literals

2 iii. 3.2.3 Arithmetic in JavaScript
iv. 3.2.4 Binary Floating-Point and Rounding Errors
v. 3.2.5 Arbitrary Precision Integers with BigInt
vi. 3.2.6 Dates and Times
c. 3.3 Text
i. 3.3.1 String Literals
ii. 3.3.2 Escape Sequences in String Literals
iii. 3.3.3 Working with Strings
iv. 3.3.4 Template Literals
v. 3.3.5 Pattern Matching
d. 3.4 Boolean Values
e. 3.5 null and undefined
f. 3.6 Symbols
g. 3.7 The Global Object
h. 3.8 Immutable Primitive Values and Mutable Object
References
i. 3.9 Type Conversions
i. 3.9.1 Conversions and Equality
ii. 3.9.2 Explicit Conversions
iii. 3.9.3 Object to Primitive Conversions
j. 3.10 Variable Declaration and Assignment
i. 3.10.1 Declarations with let and const
ii. 3.10.2 Variable Declarations with var
iii. 3.10.3 Destructuring Assignment
k. 3.11 Summary
5. Expressions and Operators
a. 4.1 Primary Expressions
b. 4.2 Object and Array Initializers
c. 4.3 Function Definition Expressions

3 d. 4.4 Property Access Expressions
i. 4.4.1 Conditional Property Access
e. 4.5 Invocation Expressions
i. 4.5.1 Conditional Invocation
f. 4.6 Object Creation Expressions
g. 4.7 Operator Overview
i. 4.7.1 Number of Operands
ii. 4.7.2 Operand and Result Type
iii. 4.7.3 Operator Side Effects
iv. 4.7.4 Operator Precedence
v. 4.7.5 Operator Associativity
vi. 4.7.6 Order of Evaluation
h. 4.8 Arithmetic Expressions
i. 4.8.1 The + Operator
ii. 4.8.2 Unary Arithmetic Operators
iii. 4.8.3 Bitwise Operators
i. 4.9 Relational Expressions
i. 4.9.1 Equality and Inequality Operators
ii. 4.9.2 Comparison Operators
iii. 4.9.3 The in Operator
iv. 4.9.4 The instanceof Operator
j. 4.10 Logical Expressions
i. 4.10.1 Logical AND (&&)
ii. 4.10.2 Logical OR (||)
iii. 4.10.3 Logical NOT (!)
k. 4.11 Assignment Expressions
i. 4.11.1 Assignment with Operation
l. 4.12 Evaluation Expressions
i. 4.12.1 eval()

4 ii. 4.12.2 Global eval()
iii. 4.12.3 Strict eval()
m. 4.13 Miscellaneous Operators
i. 4.13.1 The Conditional Operator (?:)
ii. 4.13.2 First-Defined (??)
iii. 4.13.3 The typeof Operator
iv. 4.13.4 The delete Operator
v. 4.13.5 The await Operator
vi. 4.13.6 The void Operator
vii. 4.13.7 The comma Operator (,)
n. 4.14 Summary
6. Statements
a. 5.1 Expression Statements
b. 5.2 Compound and Empty Statements
c. 5.3 Conditionals
i. 5.3.1 if
ii. 5.3.2 else if
iii. 5.3.3 switch
d. 5.4 Loops
i. 5.4.1 while
ii. 5.4.2 do/while
iii. 5.4.3 for
iv. 5.4.4 for/of
v. 5.4.5 for/in
e. 5.5 Jumps
i. 5.5.1 Labeled Statements
ii. 5.5.2 break
iii. 5.5.3 continue
iv. 5.5.4 return

5 v. 5.5.5 yield
vi. 5.5.6 throw
vii. 5.5.7 try/catch/finally
f. 5.6 Miscellaneous Statements
i. 5.6.1 with
ii. 5.6.2 debugger
iii. 5.6.3 “use strict”
g. 5.7 Declarations
i. 5.7.1 const, let, and var
ii. 5.7.2 function
iii. 5.7.3 class
iv. 5.7.4 import and export
h. 5.8 Summary of JavaScript Statements
7. Objects
a. 6.1 Introduction to Objects
b. 6.2 Creating Objects
i. 6.2.1 Object Literals
ii. 6.2.2 Creating Objects with new
iii. 6.2.3 Prototypes
iv. 6.2.4 Object.create()
c. 6.3 Querying and Setting Properties
i. 6.3.1 Objects As Associative Arrays
ii. 6.3.2 Inheritance
iii. 6.3.3 Property Access Errors
d. 6.4 Deleting Properties
e. 6.5 Testing Properties
f. 6.6 Enumerating Properties
i. 6.6.1 Property Enumeration Order
g. 6.7 Extending Objects

6 h. 6.8 Serializing Objects
i. 6.9 Object Methods
i. 6.9.1 The toString() Method
ii. 6.9.2 The toLocaleString() Method
iii. 6.9.3 The valueOf() Method
iv. 6.9.4 The toJSON() Method
j. 6.10 Extended Object Literal Syntax
i. 6.10.1 Shorthand Properties
ii. 6.10.2 Computed Property Names
iii. 6.10.3 Symbols as Property Names
iv. 6.10.4 Spread Operator
v. 6.10.5 Shorthand Methods
vi. 6.10.6 Property Getters and Setters
k. 6.11 Summary
8. Arrays
a. 7.1 Creating Arrays
i. 7.1.1 Array Literals
ii. 7.1.2 The Spread Operator
iii. 7.1.3 The Array() Constructor
iv. 7.1.4 Array.of()
v. 7.1.5 Array.from()
b. 7.2 Reading and Writing Array Elements
c. 7.3 Sparse Arrays
d. 7.4 Array Length
e. 7.5 Adding and Deleting Array Elements
f. 7.6 Iterating Arrays
g. 7.7 Multidimensional Arrays
h. 7.8 Array Methods
i. 7.8.1 Array Iterator Methods

7 ii. 7.8.2 Flattening arrays with flat() and flatMap()
iii. 7.8.3 Adding arrays with concat()
iv. 7.8.4 Stacks and Queues with push(), pop(), shift(),
and unshift()
v. 7.8.5 Subarrays with slice(), splice(), fill(), and
copyWithin()
vi. 7.8.6 Array Searching and Sorting Methods
vii. 7.8.7 Array to String Conversions
viii. 7.8.8 Static Array Functions
i. 7.9 Array-Like Objects
j. 7.10 Strings as Arrays
k. 7.11 Summary
9. Functions
a. 8.1 Defining Functions
i. 8.1.1 Function Declarations
ii. 8.1.2 Function Expressions
iii. 8.1.3 Arrow Functions
iv. 8.1.4 Nested Functions
b. 8.2 Invoking Functions
i. 8.2.1 Function Invocation
ii. 8.2.2 Method Invocation
iii. 8.2.3 Constructor Invocation
iv. 8.2.4 Indirect Invocation
v. 8.2.5 Implicit Function Invocation
c. 8.3 Function Arguments and Parameters
i. 8.3.1 Optional Parameters and Defaults
ii. 8.3.2 Rest Parameters and Variable-Length Argument
Lists
iii. 8.3.3 The Arguments Object
iv. 8.3.4 The Spread Operator for Function Calls

8 v. 8.3.5 Destructuring Function Arguments into
Parameters
vi. 8.3.6 Argument Types
d. 8.4 Functions as Values
i. 8.4.1 Defining Your Own Function Properties
e. 8.5 Functions as Namespaces
f. 8.6 Closures
g. 8.7 Function Properties, Methods, and Constructor
i. 8.7.1 The length Property
ii. 8.7.2 The name Property
iii. 8.7.3 The prototype Property
iv. 8.7.4 The call() and apply() Methods
v. 8.7.5 The bind() Method
vi. 8.7.6 The toString() Method
vii. 8.7.7 The Function() Constructor
h. 8.8 Functional Programming
i. 8.8.1 Processing Arrays with Functions
ii. 8.8.2 Higher-Order Functions
iii. 8.8.3 Partial Application of Functions
iv. 8.8.4 Memoization
i. 8.9 Summary
10. Classes
a. 9.1 Classes and Prototypes
b. 9.2 Classes and Constructors
i. 9.2.1 Constructors, Class Identity, and instanceof
ii. 9.2.2 The constructor Property
c. 9.3 Classes with the class Keyword
i. 9.3.1 Static Methods
ii. 9.3.2 Getters, Setters, and other Method Forms

9 iii. 9.3.3 Public, Private, and Static Fields
iv. 9.3.4 Example: A Complex Number Class
d. 9.4 Adding Methods to Existing Classes
e. 9.5 Subclasses
i. 9.5.1 Subclasses and Prototypes
ii. 9.5.2 Subclasses with extends and super
iii. 9.5.3 Delegation Instead of Inheritance
iv. 9.5.4 Class Hierarchies and Abstract Classes
f. 9.6 Summary
11. Modules
a. 10.1 Modules with Classes, Objects, and Closures
i. 10.1.1 Automating Closure-Based Modularity
b. 10.2 Modules in Node
i. 10.2.1 Node Exports
ii. 10.2.2 Node Imports
iii. 10.2.3 Node-Style Modules on the Web
c. 10.3 Modules in ES6
i. 10.3.1 ES6 Exports
ii. 10.3.2 ES6 Imports
iii. 10.3.3 Imports and Exports with Renaming
iv. 10.3.4 Re-Exports
v. 10.3.5 JavaScript Modules on the Web
vi. 10.3.6 Dynamic Imports with import()
vii. 10.3.7 import.meta.url
d. 10.4 Summary
12. The JavaScript Standard Library
a. 11.1 Sets and Maps
i. 11.1.1 The Set Class
ii. 11.1.2 The Map Class

10 iii. 11.1.3 WeakMap and WeakSet
b. 11.2 Typed Arrays and Binary Data
i. 11.2.1 Typed Array Types
ii. 11.2.2 Creating Typed Arrays
iii. 11.2.3 Using Typed Arrays
iv. 11.2.4 Typed Array Methods and Properties
v. 11.2.5 DataView and Endianness
c. 11.3 Pattern Matching with Regular Expressions
i. 11.3.1 Defining Regular Expressions
ii. 11.3.2 String Methods for Pattern Matching
iii. 11.3.3 The RegExp Class
d. 11.4 Dates and Times
i. 11.4.1 Timestamps
ii. 11.4.2 Date Arithmetic
iii. 11.4.3 Formatting and Parsing Date Strings
e. 11.5 Error Classes
f. 11.6 JSON Serialization and Parsing
i. 11.6.1 JSON Customizations
g. 11.7 The Internationalization API
i. 11.7.1 Formatting Numbers
ii. 11.7.2 Formatting Dates and Times
iii. 11.7.3 Comparing Strings
h. 11.8 The Console API
i. 11.8.1 Formatted Output with Console
i. 11.9 URL APIs
i. 11.9.1 Legacy URL Functions
j. 11.10 Timers
k. 11.11 Summary

11 13. Iterators and Generators
a. 12.1 How Iterators Work
b. 12.2 Implementing Iterable Objects
i. 12.2.1 “Closing” an Iterator: The Return Method
c. 12.3 Generators
i. 12.3.1 Generator Examples
ii. 12.3.2 yield* and Recursive Generators
d. 12.4 Advanced Generator Features
i. 12.4.1 The Return Value of a Generator Function
ii. 12.4.2 The Value of a yield Expression
iii. 12.4.3 The return() and throw() Methods of a
Generator
iv. 12.4.4 A Final Note About Generators
e. 12.5 Summary
14. Asynchronous JavaScript
a. 13.1 Asynchronous Programming with Callbacks
i. 13.1.1 Timers
ii. 13.1.2 Events
iii. 13.1.3 Network Events
iv. 13.1.4 Callbacks and Events in Node
b. 13.2 Promises
i. 13.2.1 Using Promises
ii. 13.2.2 Chaining Promises
iii. 13.2.3 Resolving Promises
iv. 13.2.4 More on Promises and Errors
v. 13.2.5 Promises in Parallel
vi. 13.2.6 Making Promises
vii. 13.2.7 Promises in Sequence
c. 13.3 async and await

12 i. 13.3.1 await Expressions
ii. 13.3.2 async Functions
iii. 13.3.3 Awaiting Multiple Promises
iv. 13.3.4 Implementation Details
d. 13.4 Asynchronous Iteration
i. 13.4.1 The for/await Loop
ii. 13.4.2 Asynchronous Iterators
iii. 13.4.3 Asynchronous Generators
iv. 13.4.4 Implementing Asynchronous Iterators
e. 13.5 Summary
15. Metaprogramming
a. 14.1 Property Attributes
b. 14.2 Object Extensibility
c. 14.3 The prototype Attribute
d. 14.4 Well-Known Symbols
i. 14.4.1 Symbol.iterator and Symbol.asyncIterator
ii. 14.4.2 Symbol.hasInstance
iii. 14.4.3 Symbol.toStringTag
iv. 14.4.4 Symbol.species
v. 14.4.5 Symbol.isConcatSpreadable
vi. 14.4.6 Pattern-Matching Symbols
vii. 14.4.7 Symbol.toPrimitive
viii. 14.4.8 Symbol.unscopables
e. 14.5 Template Tags
f. 14.6 The Reflect API
g. 14.7 Proxy Objects
i. 14.7.1 Proxy Invariants
h. 14.8 Summary
16. JavaScript in Web Browsers

13 a. 15.1 Web Programming Basics
i. 15.1.1 JavaScript in HTML <script> Tags
ii. 15.1.2 The Document Object Model
iii. 15.1.3 The Global Object in Web Browsers
iv. 15.1.4 Scripts Share a Namespace
v. 15.1.5 Execution of JavaScript Programs
vi. 15.1.6 Program Input and Output
vii. 15.1.7 Program Errors
viii. 15.1.8 The Web Security Model
b. 15.2 Events
i. 15.2.1 Event Categories
ii. 15.2.2 Registering Event Handlers
iii. 15.2.3 Event Handler Invocation
iv. 15.2.4 Event Propagation
v. 15.2.5 Event Cancellation
vi. 15.2.6 Dispatching Custom Events
c. 15.3 Scripting Documents
i. 15.3.1 Selecting Document Elements
ii. 15.3.2 Document Structure and Traversal
iii. 15.3.3 Attributes
iv. 15.3.4 Element Content
v. 15.3.5 Creating, Inserting, and Deleting Nodes
vi. 15.3.6 Example: Generating a Table of Contents
d. 15.4 Scripting CSS
i. 15.4.1 CSS Classes
ii. 15.4.2 Inline Styles
iii. 15.4.3 Computed Styles
iv. 15.4.4 Scripting Stylesheets
v. 15.4.5 CSS Animations and Events

14 e. 15.5 Document Geometry and Scrolling
i. 15.5.1 Document Coordinates and Viewport
Coordinates
ii. 15.5.2 Querying the Geometry of an Element
iii. 15.5.3 Determining the Element at a Point
iv. 15.5.4 Scrolling
v. 15.5.5 Viewport Size, Content Size, and Scroll Position
f. 15.6 Web Components
i. 15.6.1 Using Web Components
ii. 15.6.2 HTML Templates
iii. 15.6.3 Custom Elements
iv. 15.6.4 Shadow DOM
v. 15.6.5 Example: a <search-box> Web Component
g. 15.7 SVG: Scalable Vector Graphics
i. 15.7.1 SVG in HTML
ii. 15.7.2 Scripting SVG
iii. 15.7.3 Creating SVG Images with JavaScript
h. 15.8 Graphics in a <canvas>
i. 15.8.1 Paths and Polygons
ii. 15.8.2 Canvas Dimensions and Coordinates
iii. 15.8.3 Graphics Attributes
iv. 15.8.4 Canvas Drawing Operations
v. 15.8.5 Coordinate System Transforms
vi. 15.8.6 Clipping
vii. 15.8.7 Pixel Manipulation
i. 15.9 Audio APIs
i. 15.9.1 The Audio() Constructor
ii. 15.9.2 The WebAudio API
j. 15.10 Location, Navigation, and History

15 i. 15.10.1 Loading New Documents
ii. 15.10.2 Browsing History
iii. 15.10.3 History Management with hashchange Events
iv. 15.10.4 History Management with pushState()
k. 15.11 Networking
i. 15.11.1 fetch()
ii. 15.11.2 Server-Sent Events
iii. 15.11.3 WebSockets
l. 15.12 Storage
i. 15.12.1 localStorage and sessionStorage
ii. 15.12.2 Cookies
iii. 15.12.3 IndexedDB
m. 15.13 Worker Threads and Messaging
i. 15.13.1 Worker Objects
ii. 15.13.2 The Global Object in Workers
iii. 15.13.3 Importing Code into a Worker
iv. 15.13.4 Worker Execution Model
v. 15.13.5 postMessage(), MessagePorts, and
MessageChannels
vi. 15.13.6 Cross-Origin Messaging with postMessage()
n. 15.14 Example: The Mandelbrot Set
o. 15.15 Summary and Suggestions for Further Reading
i. 15.15.1 HTML and CSS
ii. 15.15.2 Performance
iii. 15.15.3 Security
iv. 15.15.4 WebAssembly
v. 15.15.5 More Document and Window Features
vi. 15.15.6 Events
vii. 15.15.7 Progressive Web Apps and Service Workers
viii. 15.15.8 Mobile Device APIs

16 ix. 15.15.9 Binary APIs
x. 15.15.10 Media APIs
xi. 15.15.11 Cryptography and Related APIs
17. Server-Side JavaScript with Node
a. 16.1 Node Programming Basics
i. 16.1.1 Console Output
ii. 16.1.2 Command-Line Arguments and Environment
Variables
iii. 16.1.3 Program Life Cycle
iv. 16.1.4 Node Modules
v. 16.1.5 The Node Package Manager
b. 16.2 Node Is Asynchronous by Default
c. 16.3 Buffers
d. 16.4 Events and EventEmitter
e. 16.5 Streams
i. 16.5.1 Pipes
ii. 16.5.2 Asynchronous Iteration
iii. 16.5.3 Writing to Streams and Handling Backpressure
iv. 16.5.4 Reading Streams with Events
f. 16.6 Process, CPU, and Operating System Details
g. 16.7 Working with Files
i. 16.7.1 Paths, File Descriptors, and FileHandles
ii. 16.7.2 Reading Files
iii. 16.7.3 Writing Files
iv. 16.7.4 File Operations
v. 16.7.5 File Metadata
vi. 16.7.6 Working with Directories
h. 16.8 HTTP Clients and Servers
i. 16.9 Non-HTTP Network Servers and Clients
j. 16.10 Working with Child Processes

17 i. 16.10.1 execSync() and execFileSync()
ii. 16.10.2 exec() and execFile()
iii. 16.10.3 spawn()
iv. 16.10.4 fork()
k. 16.11 Worker Threads
i. 16.11.1 Creating Workers and Passing Messages
ii. 16.11.2 The Worker Execution Environment
iii. 16.11.3 Communication Channels and MessagePorts
iv. 16.11.4 Transferring MessagePorts and Typed Arrays
v. 16.11.5 Sharing Typed Arrays Between Threads
l. 16.12 Summary
18. JavaScript Tools and Extensions
a. 17.1 Linting with ESLint
b. 17.2 JavaScript Formatting with Prettier
c. 17.3 Unit Testing with Jest
d. 17.4 Package Management with npm
e. 17.5 Code Bundling
f. 17.6 Transpilation with Babel
g. 17.7 JSX: Markup Expressions in JavaScript
h. 17.8 Type Checking with Flow
i. 17.8.1 Installing and Running Flow
ii. 17.8.2 Using Type Annotations
iii. 17.8.3 Class Types
iv. 17.8.4 Object Types
v. 17.8.5 Type Aliases
vi. 17.8.6 Array Types
vii. 17.8.7 Other Parameterized Types
viii. 17.8.8 Read-Only Types
ix. 17.8.9 Function Types

18 x. 17.8.10 Union Types
xi. 17.8.11 Enumerated Types and Discriminated Unions
i. 17.9 Summary
19. Index

19 Praise for JavaScript: The Definitive Guide, Seventh Edition
“This book is everything you never knew you wanted to know about
JavaScript. Take your JavaScript code quality and productivity to
the next level. David’s knowledge of the language, its
intricacies and gotchas, is astounding, and it shines through in
this truly definitive guide to the JavaScript language.”
—Schalk Neethling, Senior Frontend Engineer at MDN
Web Docs
“David Flanagan takes readers on a guided tour of JavaScript that
will provide them with a feature-complete picture of the language
and its ecosystem.”
—Sarah Wachs, Frontend Developer and Women Who Code
Berlin Lead
“Any developer interested in being productive in codebases
developed throughout JavaScript’s lifetime (including the latest
and emerging features) will be well served by a deep and
reflective journey through this comprehensive and definitive
book.”
—Brian Sletten, President of Bosatsu Consulting

20 JavaScript: The Definitive Guide
SEVENTH EDITION
Master the World’s Most-Used Programming
Language
David Flanagan

21 JavaScript: The Definitive Guide, Seventh Edition
by David Flanagan
Copyright © 2020 David Flanagan. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales
promotional use. Online editions are also available for most titles
(http://oreilly.com). For more information, contact our
corporate/institutional sales department: 800-998-9938 or
[email protected].
Acquisitions Editor: Jennifer Pollock
Development Editor: Angela Rufino
Production Editor: Deborah Baker
Copyeditor: Holly Bauer Forsyth
Proofreader: Piper Editorial, LLC
Indexer: Judith McConville
Interior Designer: David Futato
Cover Designer: Karen Montgomery
Illustrator: Rebecca Demarest
June 1998: Third Edition
November 2001: Fourth Edition
August 2006: Fifth Edition
May 2011: Sixth Edition
May 2020: Seventh Edition

22 Revision History for the Seventh Edition
2020-05-13: First Release
See http://oreilly.com/catalog/errata.csp?isbn=9781491952023 for
release details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc.
JavaScript: The Definitive Guide, Seventh Edition, the cover image,
and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the authors have used good faith efforts to
ensure that the information and instructions contained in this work
are accurate, the publisher and the authors disclaim all
responsibility for errors or omissions, including without limitation
responsibility for damages resulting from the use of or reliance on
this work. Use of the information and instructions contained in this
work is at your own risk. If any code samples or other technology
this work contains or describes is subject to open source licenses or
the intellectual property rights of others, it is your responsibility
to ensure that your use thereof complies with such licenses and/or
rights.
978-1-491-95202-3
[LSI]

23 Dedication
To my parents, Donna and Matt, with love and gratitude.

24 Preface
This book covers the JavaScript language and the JavaScript APIs
implemented by web browsers and by Node. I wrote it for readers with
some prior programming experience who want to learn JavaScript and
also for programmers who already use JavaScript but want to take
their understanding to a new level and really master the language. My
goal with this book is to document the JavaScript language
comprehensively and definitively and to provide an in-depth
introduction to the most important client-side and server-side APIs
available to JavaScript programs. As a result, this is a long and
detailed book. My hope, however, is that it will reward careful study
and that the time you spend reading it will be easily recouped in the
form of higher programming productivity.
Previous editions of this book included a comprehensive reference
section. I no longer feel that it makes sense to include that
material in printed form when it is so quick and easy to find up-to-
date reference material online. If you need to look up anything
related to core or client-side JavaScript, I recommend you visit the
MDN website. And for server-side Node APIs, I recommend you go
directly to the source and consult the Node.js reference
documentation.
Conventions Used in This Book
I use the following typographical conventions in this book:
Italic
Is used for emphasis and to indicate the first use of a term.
Italic is also used for email addresses, URLs, and file names.
Constant width
Is used in all JavaScript code and CSS and HTML listings, and
generally for anything that you would type literally when

25 programming.
Constant width italic
Is occasionally used when explaining JavaScript syntax.
Constant width bold
Shows commands or other text that should be typed literally by the
user
NOTE
This element signifies a general note.
IMPORTANT
This element indicates a warning or caution.
Example Code
Supplemental material (code examples, exercises, etc.) for this book
is available for download at:
https://oreil.ly/javascript_defgd7
This book is here to help you get your job done. In general, if
example code is offered with this book, you may use it in your
programs and documentation. You do not need to contact us for
permission unless you’re reproducing a significant portion of the
code. For example, writing a program that uses several chunks of code
from this book does not require permission. Selling or distributing
examples from O’Reilly books does require permission. Answering a
question by citing this book and quoting example code does not
require permission. Incorporating a significant amount of example
code from this book into your product’s documentation does require
permission.

26 We appreciate, but generally do not require, attribution. An
attribution usually includes the title, author, publisher, and ISBN.
For example: “JavaScript: The Definitive Guide, Seventh Edition, by
David Flanagan (O’Reilly). Copyright 2020 David Flanagan, 978-1-491-
95202-3.”
If you feel your use of code examples falls outside fair use or the
permission given above, feel free to contact us at
[email protected].
O’Reilly Online Learning
NOTE
For more than 40 years, O’Reilly Media has provided technology and business
training, knowledge, and insight to help companies succeed.
Our unique network of experts and innovators share their knowledge
and expertise through books, articles, and our online learning
platform. O’Reilly’s online learning platform gives you on-demand
access to live training courses, in-depth learning paths, interactive
coding environments, and a vast collection of text and video from
O’Reilly and 200+ other publishers. For more information, visit
http://oreilly.com.
How to Contact Us
Please address comments and questions concerning this book to the
publisher:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)

27 707-829-0515 (international or local)
707-829-0104 (fax)
We have a web page for this book, where we list errata, examples, and
any additional information. You can access this page at
https://oreil.ly/javascript_defgd7.
Email [email protected] to comment or ask technical questions
about this book.
For news and more information about our books and courses, see our
website at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia
Acknowledgments
Many people have helped with the creation of this book. I’d like to
thank my editor, Angela Rufino, for keeping me on track and for her
patience with my missed deadlines. Thanks also to my technical
reviewers: Brian Sletten, Elisabeth Robson, Ethan Flanagan,
Maximiliano Firtman, Sarah Wachs, and Schalk Neethling. Their
comments and suggestions have made this a better book.
The production team at O’Reilly has done their usual fine job:
Kristen Brown managed the production process, Deborah Baker was the
production editor, Rebecca Demarest drew the figures, and Judy
McConville created the index.
Editors, reviewers, and contributors to previous editions of this
book have included: Andrew Schulman, Angelo Sirigos, Aristotle
Pagaltzis, Brendan Eich, Christian Heilmann, Dan Shafer, Dave C.
Mitchell, Deb Cameron, Douglas Crockford, Dr. Tankred Hirschmann,
Dylan Schiemann, Frank Willison, Geoff Stearns, Herman Venter, Jay

28 Hodges, Jeff Yates, Joseph Kesselman, Ken Cooper, Larry Sullivan,
Lynn Rollins, Neil Berkman, Mike Loukides, Nick Thompson, Norris
Boyd, Paula Ferguson, Peter-Paul Koch, Philippe Le Hegaret, Raffaele
Cecco, Richard Yaker, Sanders Kleinfeld, Scott Furman, Scott Isaacs,
Shon Katzenberger, Terry Allen, Todd Ditchendorf, Vidur Apparao,
Waldemar Horwat, and Zachary Kessin.
Writing this seventh edition kept me away from my family for many
late nights. My love to them and my thanks for putting up with my
absences.
David Flanagan, March 2020

29 Chapter 1. Introduction to
JavaScript
JavaScript is the programming language of the web. The overwhelming
majority of websites use JavaScript, and all modern web browsers—on
desktops, tablets, and phones—include JavaScript interpreters,
making JavaScript the most-deployed programming language in history.
Over the last decade, Node.js has enabled JavaScript programming
outside of web browsers, and the dramatic success of Node means that
JavaScript is now also the most-used programming language among
software developers. Whether you’re starting from scratch or are
already using JavaScript professionally, this book will help you
master the language.
If you are already familiar with other programming languages, it may
help you to know that JavaScript is a high-level, dynamic,
interpreted programming language that is well-suited to object-
oriented and functional programming styles. JavaScript’s variables
are untyped. Its syntax is loosely based on Java, but the languages
are otherwise unrelated. JavaScript derives its first-class functions
from Scheme and its prototype-based inheritance from the little-known
language Self. But you do not need to know any of those languages, or
be familiar with those terms, to use this book and learn JavaScript.
The name “JavaScript” is quite misleading. Except for a superficial
syntactic resemblance, JavaScript is completely different from the
Java programming language. And JavaScript has long since outgrown its
scripting-language roots to become a robust and efficient general-
purpose language suitable for serious software engineering and
projects with huge codebases.

30 JAVASCRIPT: NAMES, VERSIONS, AND MODES
JavaScript was created at Netscape in the early days of the web, and technically, “JavaScript” is a trademark licensed from
Sun Microsystems (now Oracle) used to describe Netscape’s (now Mozilla’s) implementation of the language. Netscape
submitted the language for standardization to ECMA—the European Computer Manufacturer’s Association—and because of
trademark issues, the standardized version of the language was stuck with the awkward name “ECMAScript.” In practice,
everyone just calls the language JavaScript. This book uses the name “ECMAScript” and the abbreviation “ES” to refer to the
language standard and to versions of that standard.
For most of the 2010s, version 5 of the ECMAScript standard has been supported by all web browsers. This book treats ES5
as the compatibility baseline and no longer discusses earlier versions of the language. ES6 was released in 2015 and added
major new features—including class and module syntax—that changed JavaScript from a scripting language into a serious,
general-purpose language suitable for large-scale software engineering. Since ES6, the ECMAScript specification has moved
to a yearly release cadence, and versions of the language—ES2016, ES2017, ES2018, ES2019, and ES2020—are now
identified by year of release.
As JavaScript evolved, the language designers attempted to correct flaws in the early (pre-ES5) versions. In order to maintain
backward compatibility, it is not possible to remove legacy features, no matter how flawed. But in ES5 and later, programs can
opt in to JavaScript’s strict mode in which a number of early language mistakes have been corrected. The mechanism for
opting in is the “use strict” directive described in §5.6.3. That section also summarizes the differences between legacy
JavaScript and strict JavaScript. In ES6 and later, the use of new language features often implicitly invokes strict mode. For
example, if you use the ES6 class keyword or create an ES6 module, then all the code within the class or module is
automatically strict, and the old, flawed features are not available in those contexts. This book will cover the legacy features of
JavaScript but is careful to point out that they are not available in strict mode.
To be useful, every language must have a platform, or standard
library, for performing things like basic input and output. The core
JavaScript language defines a minimal API for working with numbers,
text, arrays, sets, maps, and so on, but does not include any input
or output functionality. Input and output (as well as more
sophisticated features, such as networking, storage, and graphics)
are the responsibility of the “host environment” within which
JavaScript is embedded.
The original host environment for JavaScript was a web browser, and
this is still the most common execution environment for JavaScript
code. The web browser environment allows JavaScript code to obtain
input from the user’s mouse and keyboard and by making HTTP
requests. And it allows JavaScript code to display output to the user
with HTML and CSS.
Since 2010, another host environment has been available for
JavaScript code. Instead of constraining JavaScript to work with the
APIs provided by a web browser, Node gives JavaScript access to the
entire operating system, allowing JavaScript programs to read and
write files, send and receive data over the network, and make and
serve HTTP requests. Node is a popular choice for implementing web

31 servers and also a convenient tool for writing simple utility scripts
as an alternative to shell scripts.
Most of this book is focused on the JavaScript language itself.
Chapter 11 documents the JavaScript standard library, Chapter 15
introduces the web browser host environment, and Chapter 16
introduces the Node host environment.
This book covers low-level fundamentals first, and then builds on
those to more advanced and higher-level abstractions. The chapters
are intended to be read more or less in order. But learning a new
programming language is never a linear process, and describing a
language is not linear either: each language feature is related to
other features, and this book is full of cross-references—sometimes
backward and sometimes forward—to related material. This
introductory chapter makes a quick first pass through the language,
introducing key features that will make it easier to understand the
in-depth treatment in the chapters that follow. If you are already a
practicing JavaScript programmer, you can probably skip this chapter.
(Although you might enjoy reading Example 1-1 at the end of the
chapter before you move on.)
1.1 Exploring JavaScript
When learning a new programming language, it’s important to try the
examples in the book, then modify them and try them again to test
your understanding of the language. To do that, you need a JavaScript
interpreter.
The easiest way to try out a few lines of JavaScript is to open up
the web developer tools in your web browser (with F12, Ctrl-Shift-I,
or Command-Option-I) and select the Console tab. You can then type
code at the prompt and see the results as you type. Browser developer
tools often appear as panes at the bottom or right of the browser
window, but you can usually detach them as separate windows (as
pictured in Figure 1-1), which is often quite convenient.

32 Figure 1-1. The JavaScript console in Firefox’s Developer Tools
Another way to try out JavaScript code is to download and install
Node from https://nodejs.org. Once Node is installed on your system,
you can simply open a Terminal window and type node to begin an
interactive JavaScript session like this one:
$ node
Welcome to Node.js v12.13.0.
Type ".help" for more information.
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.editor Enter editor mode

33 .exit Exit the repl
.help Print this help message
.load Load JS from a file into the REPL session
.save Save all evaluated commands in this REPL session to a file

Press ^C to abort current expression, ^D to exit the repl
> let x = 2, y = 3;
undefined
> x + y
5
> (x === 2) && (y === 3)
true
> (x > 3) || (y < 3)
false
1.2 Hello World
When you are ready to start experimenting with longer chunks of code,
these line-by-line interactive environments may no longer be
suitable, and you will probably prefer to write your code in a text
editor. From there, you can copy and paste to the JavaScript console
or into a Node session. Or you can save your code to a file (the
traditional filename extension for JavaScript code is .js) and then
run that file of JavaScript code with Node:
$ node snippet.js
If you use Node in a noninteractive manner like this, it won’t
automatically print out the value of all the code you run, so you’ll
have to do that yourself. You can use the function console.log()
to display text and other JavaScript values in your terminal window
or in a browser’s developer tools console. So, for example, if you
create a hello.js file containing this line of code:
console.log("Hello World!");
and execute the file with node hello.js, you’ll see the message
“Hello World!” printed out.
If you want to see that same message printed out in the JavaScript
console of a web browser, create a new file named hello.html, and put
this text in it:
<script src="hello.js"></script>

34 Then load hello.html into your web browser using a file:// URL like
this one:
file:///Users/username/javascript/hello.html
Open the developer tools window to see the greeting in the console.
1.3 A Tour of JavaScript
This section presents a quick introduction, through code examples, to
the JavaScript language. After this introductory chapter, we dive
into JavaScript at the lowest level: Chapter 2 explains things like
JavaScript comments, semicolons, and the Unicode character set.
Chapter 3 starts to get more interesting: it explains JavaScript
variables and the values you can assign to those variables.
Here’s some sample code to illustrate the highlights of those two
chapters:
// Anything following double slashes is an English-language comment.
// Read the comments carefully: they explain the JavaScript code.

// A variable is a symbolic name for a value.
// Variables are declared with the let keyword:
let x; // Declare a variable named x.

// Values can be assigned to variables with an = sign
x = 0; // Now the variable x has the value 0
x // => 0: A variable evaluates to its value.

// JavaScript supports several types of values
x = 1; // Numbers.
x = 0.01; // Numbers can be integers or reals.
x = "hello world"; // Strings of text in quotation marks.
x = 'JavaScript'; // Single quote marks also delimit strings.
x = true; // A Boolean value.
x = false; // The other Boolean value.
x = null; // Null is a special value that means "no
value."
x = undefined; // Undefined is another special value like
null.
Two other very important types that JavaScript programs can
manipulate are objects and arrays. These are the subjects of Chapters

35 6 and 7, but they are so important that you’ll see them many times
before you reach those chapters:
// JavaScript's most important datatype is the object.
// An object is a collection of name/value pairs, or a string to value
map.
let book = { // Objects are enclosed in curly braces.
topic: "JavaScript", // The property "topic" has value "JavaScript."
edition: 7 // The property "edition" has value 7
}; // The curly brace marks the end of the object.

// Access the properties of an object with . or []:
book.topic // => "JavaScript"
book["edition"] // => 7: another way to access property values.
book.author = "Flanagan"; // Create new properties by assignment.
book.contents = {}; // {} is an empty object with no properties.

// Conditionally access properties with ?. (ES2020):
book.contents?.ch01?.sect1 // => undefined: book.contents has no ch01
property.

// JavaScript also supports arrays (numerically indexed lists) of values:
let primes = [2, 3, 5, 7]; // An array of 4 values, delimited with [ and
].
primes[0] // => 2: the first element (index 0) of the
array.
primes.length // => 4: how many elements in the array.
primes[primes.length-1] // => 7: the last element of the array.
primes[4] = 9; // Add a new element by assignment.
primes[4] = 11; // Or alter an existing element by assignment.
let empty = []; // [] is an empty array with no elements.
empty.length // => 0

// Arrays and objects can hold other arrays and objects:
let points = [ // An array with 2 elements.
{x: 0, y: 0}, // Each element is an object.
{x: 1, y: 1}
];
let data = { // An object with 2 properties
trial1: [[1,2], [3,4]], // The value of each property is an array.
trial2: [[2,3], [4,5]] // The elements of the arrays are arrays.
};

36 COMMENT SYNTAX IN CODE EXAMPLES
You may have noticed in the preceding code that some of the comments begin with an arrow (=>). These show the value
produced by the code before the comment and are my attempt to emulate an interactive JavaScript environment like a web
browser console in a printed book.
Those // => comments also serve as an assertion, and I’ve written a tool that tests the code and verifies that it produces the
value specified in the comment. This should help, I hope, to reduce errors in the book.
There are two related styles of comment/assertion. If you see a comment of the form // a == 42, it means that after the
code before the comment runs, the variable a will have the value 42. If you see a comment of the form // !, it means that the
code on the line before the comment throws an exception (and the rest of the comment after the exclamation mark usually
explains what kind of exception is thrown).
You’ll see these comments used throughout the book.
The syntax illustrated here for listing array elements within square
braces or mapping object property names to property values inside
curly braces is known as an initializer expression, and it is just
one of the topics of Chapter 4. An expression is a phrase of
JavaScript that can be evaluated to produce a value. For example, the
use of . and [] to refer to the value of an object property or array
element is an expression.
One of the most common ways to form expressions in JavaScript is to
use operators:
// Operators act on values (the operands) to produce a new value.
// Arithmetic operators are some of the simplest:
3 + 2 // => 5: addition
3 - 2 // => 1: subtraction
3 * 2 // => 6: multiplication
3 / 2 // => 1.5: division
points[1].x - points[0].x // => 1: more complicated operands also work
"3" + "2" // => "32": + adds numbers, concatenates
strings

// JavaScript defines some shorthand arithmetic operators
let count = 0; // Define a variable
count++; // Increment the variable
count--; // Decrement the variable
count += 2; // Add 2: same as count = count + 2;
count *= 3; // Multiply by 3: same as count = count * 3;
count // => 6: variable names are expressions, too.

// Equality and relational operators test whether two values are equal,
// unequal, less than, greater than, and so on. They evaluate to true or
false.
let x = 2, y = 3; // These = signs are assignment, not equality
tests
x === y // => false: equality
x !== y // => true: inequality

37 x < y // => true: less-than
x <= y // => true: less-than or equal
x > y // => false: greater-than
x >= y // => false: greater-than or equal
"two" === "three" // => false: the two strings are different
"two" > "three" // => true: "tw" is alphabetically greater than
"th"
false === (x > y) // => true: false is equal to false

// Logical operators combine or invert boolean values
(x === 2) && (y === 3) // => true: both comparisons are true. && is
AND
(x > 3) || (y < 3) // => false: neither comparison is true. || is
OR
!(x === y) // => true: ! inverts a boolean value
If JavaScript expressions are like phrases, then JavaScript
statements are like full sentences. Statements are the topic of
Chapter 5. Roughly, an expression is something that computes a value
but doesn’t do anything: it doesn’t alter the program state in any
way. Statements, on the other hand, don’t have a value, but they do
alter the state. You’ve seen variable declarations and assignment
statements above. The other broad category of statement is control
structures, such as conditionals and loops. You’ll see examples
below, after we cover functions.
A function is a named and parameterized block of JavaScript code that
you define once, and can then invoke over and over again. Functions
aren’t covered formally until Chapter 8, but like objects and
arrays, you’ll see them many times before you get to that chapter.
Here are some simple examples:
// Functions are parameterized blocks of JavaScript code that we can
invoke.
function plus1(x) { // Define a function named "plus1" with
parameter "x"
return x + 1; // Return a value one larger than the value
passed in
} // Functions are enclosed in curly braces

plus1(y) // => 4: y is 3, so this invocation returns 3+1

let square = function(x) { // Functions are values and can be assigned to
vars
return x * x; // Compute the function's value
}; // Semicolon marks the end of the assignment.

square(plus1(y)) // => 16: invoke two functions in one
expression

38 In ES6 and later, there is a shorthand syntax for defining functions.
This concise syntax uses => to separate the argument list from the
function body, so functions defined this way are known as arrow
functions. Arrow functions are most commonly used when you want to
pass an unnamed function as an argument to another function. The
preceding code looks like this when rewritten to use arrow functions:
const plus1 = x => x + 1; // The input x maps to the output x + 1
const square = x => x * x; // The input x maps to the output x * x
plus1(y) // => 4: function invocation is the same
square(plus1(y)) // => 16
When we use functions with objects, we get methods:
// When functions are assigned to the properties of an object, we call
// them "methods." All JavaScript objects (including arrays) have
methods:
let a = []; // Create an empty array
a.push(1,2,3); // The push() method adds elements to an array
a.reverse(); // Another method: reverse the order of
elements

// We can define our own methods, too. The "this" keyword refers to the
object
// on which the method is defined: in this case, the points array from
earlier.
points.dist = function() { // Define a method to compute distance between
points
let p1 = this[0]; // First element of array we're invoked on
let p2 = this[1]; // Second element of the "this" object
let a = p2.x-p1.x; // Difference in x coordinates
let b = p2.y-p1.y; // Difference in y coordinates
return Math.sqrt(a*a + // The Pythagorean theorem
b*b); // Math.sqrt() computes the square root
};
points.dist() // => Math.sqrt(2): distance between our 2
points
Now, as promised, here are some functions whose bodies demonstrate
common JavaScript control structure statements:
// JavaScript statements include conditionals and loops using the syntax
// of C, C++, Java, and other languages.
function abs(x) { // A function to compute the absolute value.
if (x >= 0) { // The if statement...
return x; // executes this code if the comparison is
true.
} // This is the end of the if clause.
else { // The optional else clause executes its code

39 if
return -x; // the comparison is false.
} // Curly braces optional when 1 statement per
clause.
} // Note return statements nested inside
if/else.
abs(-10) === abs(10) // => true

function sum(array) { // Compute the sum of the elements of an array
let sum = 0; // Start with an initial sum of 0.
for(let x of array) { // Loop over array, assigning each element to
x.
sum += x; // Add the element value to the sum.
} // This is the end of the loop.
return sum; // Return the sum.
}
sum(primes) // => 28: sum of the first 5 primes 2+3+5+7+11

function factorial(n) { // A function to compute factorials
let product = 1; // Start with a product of 1
while(n > 1) { // Repeat statements in {} while expr in () is
true
product *= n; // Shortcut for product = product * n;
n--; // Shortcut for n = n - 1
} // End of loop
return product; // Return the product
}
factorial(4) // => 24: 1*4*3*2

function factorial2(n) { // Another version using a different loop
let i, product = 1; // Start with 1
for(i=2; i <= n; i++) // Automatically increment i from 2 up to n
product *= i; // Do this each time. {} not needed for 1-line
loops
return product; // Return the factorial
}
factorial2(5) // => 120: 1*2*3*4*5
JavaScript supports an object-oriented programming style, but it is
significantly different than “classical” object-oriented
programming languages. Chapter 9 covers object-oriented programming
in JavaScript in detail, with lots of examples. Here is a very simple
example that demonstrates how to define a JavaScript class to
represent 2D geometric points. Objects that are instances of this
class have a single method, named distance(), that computes the
distance of the point from the origin:
class Point { // By convention, class names are capitalized.
constructor(x, y) { // Constructor function to initialize new

40 instances.
this.x = x; // This keyword is the new object being
initialized.
this.y = y; // Store function arguments as object
properties.
} // No return is necessary in constructor
functions.

distance() { // Method to compute distance from origin to
point.
return Math.sqrt( // Return the square root of x² + y².
this.x * this.x + // this refers to the Point object on which
this.y * this.y // the distance method is invoked.
);
}
}

// Use the Point() constructor function with "new" to create Point objects
let p = new Point(1, 1); // The geometric point (1,1).

// Now use a method of the Point object p
p.distance() // => Math.SQRT2
This introductory tour of JavaScript’s fundamental syntax and
capabilities ends here, but the book continues with self-contained
chapters that cover additional features of the language:
Chapter 10, Modules
Shows how JavaScript code in one file or script can use JavaScript
functions and classes defined in other files or scripts.
Chapter 11, The JavaScript Standard Library
Covers the built-in functions and classes that are available to
all JavaScript programs. This includes important data stuctures
like maps and sets, a regular expression class for textual pattern
matching, functions for serializing JavaScript data structures,
and much more.
Chapter 12, Iterators and Generators
Explains how the for/of loop works and how you can make your own
classes iterable with for/of. It also covers generator functions
and the yield statement.
Chapter 13, Asynchronous JavaScript
This chapter is an in-depth exploration of asynchronous
programming in JavaScript, covering callbacks and events, Promise-

41 based APIs, and the async and await keywords. Although the core
JavaScript language is not asynchronous, asynchronous APIs are the
default in both web browsers and Node, and this chapter explains
the techniques for working with those APIs.
Chapter 14, Metaprogramming
Introduces a number of advanced features of JavaScript that may be
of interest to programmers writing libraries of code for other
JavaScript programmers to use.
Chapter 15, JavaScript in Web Browsers
Introduces the web browser host environment, explains how web
browsers execute JavaScript code, and covers the most important of
the many APIs defined by web browsers. This is by far the longest
chapter in the book.
Chapter 16, Server-Side JavaScript with Node
Introduces the Node host environment, covering the fundamental
programming model and the data structures and APIs that are most
important to understand.
Chapter 17, JavaScript Tools and Extensions
Covers tools and language extensions that are worth knowing about
because they are widely used and may make you a more productive
programmer.
1.4 Example: Character Frequency Histograms
This chapter concludes with a short but nontrivial JavaScript
program. Example 1-1 is a Node program that reads text from standard
input, computes a character frequency histogram from that text, and
then prints out the histogram. You could invoke the program like this
to analyze the character frequency of its own source code:
$ node charfreq.js < charfreq.js
T: ########### 11.22%
E: ########## 10.15%
R: ####### 6.68%
S: ###### 6.44%
A: ###### 6.16%
N: ###### 5.81%
O: ##### 5.45%
I: ##### 4.54%
H: #### 4.07%
C: ### 3.36%

42 L: ### 3.20%
U: ### 3.08%
/: ### 2.88%
This example uses a number of advanced JavaScript features and is
intended to demonstrate what real-world JavaScript programs can look
like. You should not expect to understand all of the code yet, but be
assured that all of it will be explained in the chapters that follow.
Example 1-1. Computing character frequency histograms with JavaScript
/**
* This Node program reads text from standard input, computes the frequency
* of each letter in that text, and displays a histogram of the most
* frequently used characters. It requires Node 12 or higher to run.
*
* In a Unix-type environment you can invoke the program like this:
* node charfreq.js < corpus.txt
*/

// This class extends Map so that the get() method returns the specified
// value instead of null when the key is not in the map
class DefaultMap extends Map {
constructor(defaultValue) {
super(); // Invoke superclass constructor
this.defaultValue = defaultValue; // Remember the default value
}

get(key) {
if (this.has(key)) { // If the key is already in the
map
return super.get(key); // return its value from
superclass.
}
else {
return this.defaultValue; // Otherwise return the default
value
}
}
}

// This class computes and displays letter frequency histograms
class Histogram {
constructor() {
this.letterCounts = new DefaultMap(0); // Map from letters to
counts
this.totalLetters = 0; // How many letters in all
}

// This function updates the histogram with the letters of text.
add(text) {
// Remove whitespace from the text, and convert to upper case
text = text.replace(/\s/g, "").toUpperCase();

43 // Now loop through the characters of the text
for(let character of text) {
let count = this.letterCounts.get(character); // Get old count
this.letterCounts.set(character, count+1); // Increment it
this.totalLetters++;
}
}

// Convert the histogram to a string that displays an ASCII graphic
toString() {
// Convert the Map to an array of [key,value] arrays
let entries = [...this.letterCounts];

// Sort the array by count, then alphabetically
entries.sort((a,b) => { // A function to define sort
order.
if (a[1] === b[1]) { // If the counts are the same
return a[0] < b[0] ? -1 : 1; // sort alphabetically.
} else { // If the counts differ
return b[1] - a[1]; // sort by largest count.
}
});

// Convert the counts to percentages
for(let entry of entries) {
entry[1] = entry[1] / this.totalLetters*100;
}

// Drop any entries less than 1%
entries = entries.filter(entry => entry[1] >= 1);

// Now convert each entry to a line of text
let lines = entries.map(
([l,n]) => `${l}: ${"#".repeat(Math.round(n))} ${n.toFixed(2)}%`
);

// And return the concatenated lines, separated by newline
characters.
return lines.join("\n");
}
}

// This async (Promise-returning) function creates a Histogram object,
// asynchronously reads chunks of text from standard input, and adds those
chunks to
// the histogram. When it reaches the end of the stream, it returns this
histogram
async function histogramFromStdin() {
process.stdin.setEncoding("utf-8"); // Read Unicode strings, not bytes
let histogram = new Histogram();
for await (let chunk of process.stdin) {
histogram.add(chunk);
}
return histogram;
}

44
// This one final line of code is the main body of the program.
// It makes a Histogram object from standard input, then prints the
histogram.
histogramFromStdin().then(histogram => { console.log(histogram.toString());
});
1.5 Summary
This book explains JavaScript from the bottom up. This means that we
start with low-level details like comments, identifiers, variables,
and types; then build to expressions, statements, objects, and
functions; and then cover high-level language abstractions like
classes and modules. I take the word definitive in the title of this
book seriously, and the coming chapters explain the language at a
level of detail that may feel off-putting at first. True mastery of
JavaScript requires an understanding of the details, however, and I
hope that you will make time to read this book cover to cover. But
please don’t feel that you need to do that on your first reading. If
you find yourself feeling bogged down in a section, simply skip to
the next. You can come back and master the details once you have a
working knowledge of the language as a whole.

Another Random Scribd Document
with Unrelated Content

l'immeritato rimprovero a' cronisti; ma poi se ne dimenticò, ed ebbe
a scusarsi della sua "scapatagine" presso l'Odorici". (Bellezza o. c.)
Una volta, conversando con un amico, gli citò una sentenza che gli
pareva bella, ma non si rammentava più dove l'avesse trovata. Sfido!
gli disse l'amico: è vostra! (Dialogo dell'invenzione); egli restò
confuso, corse al volume delle sue Opere Varie, e rispose un po'
balbettando: "Quand'è così, la citazione non ha alcun valore." E
mutò discorso. Nè questo è il solo né il più sorprendente esempio
della sua davvero "portentosa" dimenticanza di ciò ch'egli stesso
aveva scritto. Una sera, narra il Fabris, a chi gli citava due o tre versi
del coro: "Dagli atri muscosi", ecc. egli disse non ricordare punto
quei versi. Un'altra sera una signora, che aveva recitato
stupendamente a Napoli la parte d'Ermengarda, gli diede il proprio
ritratto; con sotto scritti alcuni versi di questo personaggio; invano i
famigliari gli ricordavano che eran suoi; egli sostenne risolutamente
di non averli mai scritti; finché dovette cedere alla evidenza:
"quando gli additai (scrive Fabris) il luogo preciso della tragedia dove
si trovavano. Un'altra volta lo trovai circondato da un mucchio di
libri, e tutt'intento a cercare un passo di un autore, ch'egli aveva in
mente; e richiesto da lui se lo sapessi trovare, gl'indicai una delle sue
opere, al che egli stentando a prestar fede, andò a cercare il volume,
né si acquetò fino a che non gli ebbi mostrata la pagina". (Bellezza,
o. c.)
Era così misoneico, che non andò a vedere lo zio Beccaria morente,
in ferrovia, perchè quella allora era una novità. Già a 22 anni
scriveva (Epist. I, 72) del ribrezzo che gli metteva addosso il vedere
nuove facce; anche Stampa afferma, che il solo vedere una persona
nuova lo metteva sempre di malumore; e che estendeva il
misoneismo ai bicchieri, alle scatole del tabacco, alle cravatte, le cui
forme non mutò mai, come la madre sua non mutò mai le mode che
avea portate nella giovinezza.
Paure. — Egli, poi, fondeva il misoneismo alla panofobia: aveva
paura di tutto, delle strade ferrate, del colera, del dentista; provava

vero spavento a visitare un paese straniero.
Paradossi. — È strano ch'egli, così equilibrato in ogni suo lavoro, si
piacesse così spesso (Cantù, op. cit.) di quei paradossi, ove (le son
frasi Manzoniane): la salsa è tutto; e non solo in letteratura, anzi più
spesso ancora che in letteratura, in politica, e in economia, come
quando voleva che si lodasse l'architetto Mengoni per le difficoltà
vinte nel costrurre la Biblioteca Ambrosiana sopra area limitata e
disuguale, e poi suggeriva di... demolirla. Alcuni eran geniali come:
quando proponeva smetter gli ambasciadori, essendo divenuti ora
inutili: e come quando affermava — "esservi mancanze, le quali,
lungi dal far perdere a un autore il titolo di galantuomo, gli
acquistano spesso quello di benemerito" — e che: — "l'accusa di
plagio è stata fatta sempre agli scrittori che hanno detto il più di
cose nuove" — e che: — "la rappresentazione delle passioni che non
eccitano simpatia, ma riflessione sentita, è più poetica d'ogni altra".
E nel parlare e nello scrivere in Italia constata che, "per non dare
nello strano, bisogna tenersi lontano dal naturale"; e ciò per "non
saper come fare per dire una cosa che si dice ogni momento".
Son queste tutte, in vero, delle trovate più paradossali in apparenza
che non in realtà, e che possono parere tali solo all'uomo volgare.
Ma però egli si piaceva troppo in altre sentenze, peggio che
paradossali, solo basate sulla forma, sul suono, sul contrasto
dell'espressione — come quando pretendeva la moda una libertà
portata dal Cristianesimo, che, viceversa, perpetua, perfino nelle
cocolle del frate, la veste delle plebi Romane; e quando parla del
vezzo del pubblico, il quale s'ostina "a demander des explications sur
ce qui n'avait que le défaut d'être trop clair", e che "l'osservar poco
è.... il mezzo più sicuro per concludere molto": e come quando
trovava la seconda Gerusalemme di Tasso "indubbiamente migliore
della prima, sia riguardo ai versi, sia riguardo alle altre correzioni", e
quando in una lettera al Bonghi sostiene che il Baretti
"quell'Aristarco, che ebbe e ha ancora la riputazione di critico
incontentabile, peccò piuttosto di troppa indulgenza"!!

Chiamava i ladri i più gran partigiani del diritto di proprietà, perchè...
arrischiano la vita per ottenerla. Discorrendo col Torti del vino e dei
suoi componenti conchiudeva: "In fine dei conti, la base del vino è
l'acèìa".
La frequenza di questi paradossi o meglio dei bisticci che come
vedremo formano non scarsa parte del suo contenuto letterario in
prosa, è tanto più strana in lui che in alcune severe sentenze ne
riprovava l'uso come perniciosissimo al giusto ragionamento (v.
sotto).
Abulia. — Come accade in molti geni, la profondità del pensiero, che
malgrado tante mende era in lui mirabile, ne aveva depressa la
robustezza della volontà e il senso pratico, il che chiaramente
confessò in questa lettera a Briano giustificando con ciò il rifiuto
dell'offertagli deputazione (V. Epistolario, Vol. II — Milano, 1883 —
pag. 176).
"Il senso pratico dell'opportunità, del saper discernere il punto o un
punto dove il desiderabile si incontri col riescibile; e attenersi
sacrificando il primo con rassegnazione non solo, ma con fermezza
fin dove è necessario, salvo il diritto si intende, è un dono che mi
manca a un segno singolare: e per una singolarità opposta, ma che
non è nemmeno un rimedio, perchè riesce non a temperare ma a
impedire ciò che mi pare desiderabile, mi guarderei bene dal saperlo
non che dal sostenerlo. Ardito nel mettere in campo proposizioni,
che paiono e saran paradossi, e tenace non meno nel difenderle,
tutto mi si fa dubbioso, oscuro e complicato, quando le parole
possono condurre a una deliberazione.
"Un utopista e un irresoluto son due soggetti inutili, per lo meno, in
una riunione in cui si tratti di conchiudere; io sarei l'uno e l'altro nello
stesso tempo.
"Il fattibile più volte non mi piace e dirò anzi mi ripugna; ciò che mi
piace non solo parrebbe fuor di proposito e fuor di tempo agli altri,
ma sgomenterebbe me medesimo, quando si trattasse non di

vagheggiarlo o lodarlo semplicemente, ma di promuoverlo in effetto;
e d'averne poi sulla coscienza una parte qualunque delle
conseguenze."
Son le parole stesse con cui espressero la loro abulia Cardano,
Newton e Rousseau, e recentemente Renan ed Amiel
[20].
L'abulia lo lasciava preda del suo ambiente, favoriva la sua
suggestionabilità, il che spiega perché fino a che fu sotto l'influenza
della madre vedesse dei geni nei suoi amanti e non s'accorgesse
dell'indelicatezza nel farne egli l'elogio; appena caduto nel dominio
dei preti passa ad un fanatismo bigotto così esagerato come era
forse esagerato l'anticristianesimo e l'odio dei preti quando era sotto
l'influsso degli enciclopedisti. Vedremo presto come alla sua
conversione abbia contribuito molto la suggestione della moglie,
della madre, di due preti e d'una... vicina di casa.
Questa abulia ed insieme la poca affettività che fra poco dimostrerò,
spiegano la sua ripugnanza a scrivere agli amici, a rispondere loro
anche in cose importantissime.
Se il prendere la penna era per lui sempre una "azione eroica" —
così confidava egli al Grossi, — quando poi si trattava "di scrivere
una lettera di cerimonia", allora "l'impresa" (è ancor egli che parla),
si facea addirittura "erculea". Questa lettera diventava per lui una
vera calamità! Vi pensava delle settimane senza mai sapersi risolvere
a mettersi alla scrivania; oppure vi si metteva varie volte... per non
scrivere poi altro che qualche linea (Bellezza o. c.).
Finalmente, dopo esitanze, meditazioni e perdite di tempo
deplorabili, finiva a scriverla e a spedirla; e allora ridiventava di buon
umore, non senza rimpiangere tutto il tempo che vi aveva perduto;
però non di raro dopo scrittala era oppresso dal tormento dei
pentimenti; sicchè molte volte mandava il servo a ritirarla dalla Posta
per paura gli fosse sfuggito qualche errore. — Quando ristampò la
sua lettera famosa a Cesare D'Azeglio intorno al Romanticismo, ne
volle rivedere le bozze, chi dice quattro, chi dice tredici volte...; e si
trattava di una ristampa (V. Barbiera, op. cit., pag. 364).

Senso pratico. — Questa abulia era in lui peggiorata dall'assenza di
ogni senso pratico della vita o senso comune. Quindi, erede d'un
forte patrimonio, venutogli inaspettato — quello dell'Imbonati, —
non sa valersene per migliorare il proprio censo, sicchè finisce a
dover vendere tutti i poderi aviti, ai quali era affezionatissimo: autore
d'un'opera coronata da un immenso successo come i Promessi Sposi,
venduta in poco tempo a due mila copie, — cosa straordinaria in
quei tempi — riesce invece a rimettervi 80 mila lire quando se ne fa
egli l'editore per non volersi adattare a dare alcuno sconto ai librai,
che è la condizione sine qua non d'ogni smercio librario. Finalmente,
proprietario agricolo, manca della previdenza più semplice — quella
di prendere un'assicurazione sugl'incendi.
Affettività. — Aveva, come accennai, comune coi folli morali la poca
affettività; fu ingrato col Foscolo (Lettera al Trechi), col Torti; amico
intimo del Grossi, non volle pronunciare due sole parole che
avrebbero potuto salvarlo da gravissime noie nelle polemiche coi
critici pei suoi Lombardi alla prima Crociata; amico antico del Fauriel,
ne divenne dopo qualche anno quasi un estraneo; poco e male si
preoccupò dei figli, non dandosi il menomo pensiero della loro
educazione e collocazione. Come Beccaria, dopo aver amato
caldamente la prima moglie, ne sposa dopo 3 anni un'altra; al figlio
Pietro che gli domanda una raccomandazione per riavere un
impiego, risponde con una lettera che parrebbe diretta ad un ignoto,
in cui protesta non avere relazione con alcuna persona influente, il
che non era vero perchè lo vediamo — quasi contemporaneamente
(Epist. II) — raccomandare persona affatto a lui estranea nè gran
che più meritevole.
Precoce. — Fu (De Gubernatis, op. cit.), precoce come sono tutti i
degenerati; a 15 anni aveva scritto il Trionfo della libertà, a 18 le
Armonie giovanili, e non mancava nei suoi primi anni di quella
megalomania così frequente nei giovani ma che contrasta
stranamente coll'eccessiva umiltà e modestia della età matura, in cui

avea tanto più ragioni d'insuperbire: come provano questi versi nel
Trionfo della Libertà, dettato a 15 anni:
Ed io pur anco ed io vate trilustre
Forse ahi! che spero la seconda vita
Vivrò se alle mie forze inferme e frali....
E più sotto...
È forse a somma gloria ogni via chiusa
Che ancor non sia d'altre vestigia folta?
Dante ha la tromba e il cigno di Val Chiusa
La dolce lira....
mettendosi, come si vede, in troppo buona compagnia.
Contraddizione. Bigottismo. — Nel 1810, a 26 anni circa, colui che
era stato fino allora, non solo Voltairiano convinto, come mostrò in
quei due poemi e nelle corrispondenze, ma fin eccessivo odiatore del
prete, colui che si lagnava che al letto del moribondo suo Arese,
appena allontanati gli amici, si fosse fatta affacciare l'orribile figura
del prete, che andò nel 1806 precisamente per questo, a Parigi,
comechè, diceva: "in Italia uno non potere vivere nè morire come
vuole, mentre in Francia almeno sono indifferenti", passò
all'improvviso al cattolicismo più esagerato. La causa predisponente
pare ne fosse in parte l'equivalente psichico di uno dei suoi accessi
epilettoidi.
Secondo il Barbiera (Il Salotto della contessa Maffei e Camillo Cavour
— 6. Edizione, Baldini e Castoldi, Milano, p. 359), in un momento di
delirio il Manzoni che avea smarrito per le vie di Parigi la moglie,
sarebbe entrato angoscioso e tremante nella chiesa di S. Rocco
esclamando: — "Dio mio, se esisti, rivèlati a me; e fammi trovare
Enrichetta". Secondo Stampa, che forse ne ebbe informazioni più
esatte e dirette dalla seconda moglie, egli, nel 1810, mentre passava
vicino alla chiesa di S. Rocco, fu colpito dal solito deliquio o paura

che fosse di deliquio, e mal reggendosi in piede potè ripararsi in
quella chiesa; vi si sentì subito meglio e trovò un immenso conforto
nel trovarsi in un luogo sacro. E da allora comincia la sua
conversione.
Chi conosce il colorito terrifico religioso
[21] frequente nell'epilessia,
la sua facilità a polarizzare gli animi di chi ne sia colpito nelle
direzioni più contradditorie, trova invece più naturale che questa
malattia in lui da anni radicata, benché come vedemmo in forma
frusta
[22] riuscisse a polarizzarne completamente la personalità
psichica nel senso contrario al proprio passato positivista, anzi
antireligioso; come in S. Paolo, e come vedemmo in molti altri
epilettici e geni, Swedenborg, p. e., Pascal, Rousseau, Cardano
(Uomo di Genio Parte II e III).
E ciò tanto più facilmente, perchè in quegli anni era, come scrive la
madre, assai più del solito in preda ai suoi disturbi nervosi, in seguito
alla paura incontrata assistendo all'incoronazione di Napoleone
(siamo di nuovo a manifestazioni panofobiche) nelle vie di Parigi, ove
credè di essere soffocato dalla folla.
Un più recente studio (E. Degola: per De Gubernatis) spiega meglio
questa sua strana condotta o meglio forse aggiunge un altro più
potente a questi moventi. — Secondo il carteggio dell'Ab. Degola, un
santo uomo sempre in cerca di proseliti, avendo costui convertito
una certa Geymüller e poi sua figlia, protestanti, amici, correligionari
e quasi coinquilini della Blondel in quell'epoca (1810) a Parigi —
questa ultima ne fu così impressionata da decidersi subitamente ad
imitarla e si convertì il 22 Maggio; — Manzoni prima la lasciò fare
senza molto esserne scosso, ne disputò anzi un poco con Degola, —
poi cominciò a subirne l'azione suggestiva, come è prova l'aver
consentito il 15 Febbraio 1810 a rinnovare il rito nuziale; poi a quella
di Degola si aggiunse l'opera di Monsig. Tosi — ma pure al 28 Agosto
1810 non era convertito che a metà. — "Il già sì fiero Alessandro
(scrive il suo 2º. domatore Tosi a Degola) quantunque mostri molta
docilità non è ancor conquistato alla fede." — Ma i preti convertono
anche la madre Donna Giulia, che s'accosta alla mensa della B. V.; e

la suggestione quindi aumenta sempre più; — benché il 22 Febb.
1811, Tosi volesse vederlo più docile all'insinuazione dolcissima della
moglie e della madre. Ma sotto quattro suggestionatori di quella
forza finiva per cader, non solo ma andar al polo opposto
dell'ascetismo morboso. — Il 7 Marzo 1811, ossia 15 giorni dopo,
Manzoni ne era già preda completa, era secondo la mite formula di
Lojola perinde ac cadaver e scriveva di sè: Soffrire giusto questo
castigo per chi non solo dimenticava Iddio, ma ebbe la disgrazia,
l'ardire di negarlo.
Nel 1817 ancor però tremavano i due convertitori e le due loro
alunne che tornando a Parigi potesse venir meno la loro potente
azione suggestiva — da cui solo evidentemente credevano
dipendesse la conversione e deploravano ch'egli — un grande
egoista nel fondo anche con tutta la sua religione — "non si
consigliasse se non con le sue convulsioni contro cui credea unico
rimedio il viaggio". (De Gubernatis, S. E. Degola).
Ma checchè affermino Magenta che ne tentò un'apposita
dimostrazione per Tosi, e De Gubernatis che sotto altra forma e con
maggiori documenti la riconformò a quasi esclusivo vantaggio di
Degola, se giovinetto Manzoni non avesse fatto ricerche filosofiche
elevatissime e osservazioni fin troppo dal vero, delle scuole
pretesche, di cui si dichiarò vittima per parecchi anni
[23], e se non
avesse avuto per maestri ed amici, Cabanis e Tracy, al cui confronto
Tosi e Degola erano troppo poca cosa, il fatto potrebbe parere
strano, ma non istraordinario.
Tanto più che ad ogni modo non giungerebbe mai un pensatore, sia
pure convertito, fino all'esagerazione di cacciare di casa le opere più
pregiate del Voltaire ornate di autografi suoi; e giustificarsi
dell'amore che vi aveva sempre posto, col dire che non ne aveva
prima letto le confutazioni d'un volgarissimo critico (Guenèe); nè
giungerebbe mai alle morbose effusioni ascetiche, simili a quelle in
cui si abbandona Manzoni quando scrive al Tosi: "Col Padre della
Misericordia si ricordi di questo povero uomo, la cui miseria le è
nota". E più tardi: "Si ricordi innanzi a Colui che ascolta; tribolati di

chi ha tanto bisogno di essere perdonato"; o quando scrive nelle
lettere al Tosi pubblicate dal Magenta: "Ringrazio vivamente il
Signore che ci ha offerto questo fortunato mezzo di propiziazione per
noi peccatori" (sic!) e "ringrazio pure di cuore la bontà di lei del cui
santo ministero si vale per tutto ciò che io possa fare. Dico e senza
esitare questa parola, se malgrado la mia profonda indegnità (ecco
la linea che segna il delirio di indegnità e di peccato dalla comune
umiltà), sento quanto possa in me operare la Onnipotenza della
Divina Grazia, (D e G grandi). Si compiaccia di pregare il buon Gesù
che non si stanchi di farne risplendere i miracoli in un cuore che ne
ha tanto bisogno. Mi tenga sempre suo umilissimo e affezionatissimo
figlio in Gesù Cristo. — Alessandro Manzoni".
Notisi che la lettera, riguardava non un atto ignobile od equivoco, od
almeno indifferente che abbisognasse di scusa; ma una buon'azione,
una opera di carità commessa in segreto!!
Oh! non ti par di vedere un vecchio instupidito dall'età, accasciato e
curvo ai piedi del prete?! — Eppure qui si tratta di un giovane baldo
ch'era pochi anni prima audace pensatore, e perfino schernitore di
preti.
Giustamente avvertiva il De Gubernatis, che non è certo alienista nè
amico degli alienisti, ed in un'epoca in cui tali questioni non si
toccavano ancora, anzi non si sognava nemmeno dai letterati che
esistessero, tanto erano digiuni d'ogni scienza psicologica non che
psichiatrica; non potersi spiegare tutto ciò se non per un delirio: ed
io aggiungerò per il delirio così detto d'indegnità, o di peccato che è
una nota varietà della lipemania.
E ciò è ribadito dalla lettura di questi suoi pensieri mandati al Tosi:
"Felici noi se sappiamo comprendere che l'unica vera gioia e l'unico
sapere viene dallo spirito che il Padre ci manda nel nome di Gesù
Cristo." — E poi: "Gesù Cristo, nostro esemplare, (sic) ha proferito
parole che noi dobbiamo ripetere; e quante volte quelle parole sono
per noi terribili da proferirsi, perchè racchiudono la nostra condanna
e svelano la funesta parola, contraddizione, tra il nostro esemplare e
la nostra condotta". (Magenta o. c.)

Ora un simile delirio di peccato può passare anche per naturale
effetto dell'età in un uomo disfatto dagli anni, ma in un giovane
geniale, già Voltairiano per giunta, è evidentemente morboso.
Il Tosi suo confessore si era completamente impadronito di lui;
secondo lui, per redimere il suo passato peccaminoso (eppure a dire
il vero, peccato non aveva egli che di idee), non sarebbe bastato
dettasse dodici inni sacri, tanti cioè quanti erano i mesi dell'anno, ma
doveva scrivere La Morale cattolica in difesa della religione. E il
Magenta pretende (non è però ben provato, e Cantù e Stampa lo
negherebbero) che più volte il Tosi chiudesse il Manzoni nel suo
studio, come uno scolaretto, dichiarando che non lo avrebbe lasciato
uscire da lì fino che non avesse scritto un certo numero di pagine;
certo è che pretendeva che il Manzoni mettesse in versi oltre che
quella collana di Inni mensili "la storia di Mosè, e tracciasse un
lavoro ascetico in cui si dovea dimostrare che l'uomo abbandonato a
sè cerca la soddisfazione in una scienza vana, felice viceversa se
sappia comprendere che l'unica vera gioia e l'unica scienza vengono
dallo Spirito che il Padre ci manda in nome di Gesù Cristo".
Infine per comprendere fino a qual punto giungesse il fanatismo suo
e del suo convertitore, Tosi, basti dire che trovò peccaminoso fino
quel brano bellissimo dei Promessi Sposi in cui il Padre Cristoforo
assolve Lucia dal voto, brano che fu salvato per miracolo più tardi
dalla scancellatura al cessare dell'acuzie della crisi psichiatrica.
Secondo De Gubernatis, che però qui vuolsi da alcuni esageri un
fatto vero, da quell'anno 1810, l'anno della conversione, fino al
1818; e, lasciando la cronologia che potrebbe esser inesatta, certo
nei migliori e più fecondi anni della vita, egli fu completamente
sterile;
[24] men che qualche piantagione agricola, qualche disegno di
villa e gli stentati e sterili primi inni sacri, e due canti patriottici
classici, egli non avrebbe fatto nulla di grande; e ciò perchè il
bigottismo più gretto invase e guastò quella nobile anima (come
persino il clericale Cantù dovette confessare), sostituendosi, non che
al positivismo, al vero sentimento religioso. E il bigottismo che ha

abbattuto due grandi nazioni, la Spagna e la Francia, ha forza che
basti per annichilire anche il più grande dei geni.
Vero è che lo Stampa pretende confutare in proposito ambedue quei
biografi: ma la sua invece che una confutazione ne è una
riconferma; perchè deve ammettere che il Manzoni pregava tre volte
al giorno, che recitava i paternoster alla sera con quelli della sua
famiglia, che suggeriva a un malato un santone che guariva con
benedizioni, che avrebbe voluto baciare i piedi al Papa, infine, che ne
sosteneva la completa infallibilità in questioni religiose, il che si vede
del resto nell'Epistolario (vol. 4), egli, che non foss'altro dalla
condotta del Vaticano col suo grande Rosmini, torturato moralmente
in vita, e forse spento dal noto a Sarpi stylum Romanae Ecclesiae
avrebbe dovuto almeno per ragione di sentimento, per ragion
d'amicizia, comprendere la terribile fallibilità della Chiesa.
Certo che: se il delirio religioso sorto a poco a poco — prima in
grazia ad un accesso epilettoide e poi mercè la suggestione della
moglie, della madre e del Tosi, e Degola in un organismo debole e
predisposto a passare agli eccessi opposti dalla nevrosi dominante e
dagli incidenti che questa ingrandiva, — se quel delirio avesse
continuato ad imperversare a questo modo sull'anima di quel
grande, noi del Manzoni non avremmo più avuto, toltone i bei versi
giovanili, che quei poco felici primi inni e l'importazione di qualche
pianta esotica d'alto fusto.
Ma nel 1818, a rompere la prepotente suggestione altrui e la propria
— gli sorse contro una di quelle grandi sventure che
omeopaticamente spesso servono di rimedio alle più gravi
psicopatie: in causa della pessima amministrazione sua, se egli,
malgrado la lauta eredità Imbonati, quasi 300,000 lire, (secondo
Petrocchi o. c.,) volle conservare Brusuglio, dovette vendere la casa e
villa paterna, cui era affezionatissimo e nel cui villaggio, come è
confermato dai colloqui del Manzoni con la Maffei (v. Barbiera, p.
362) egli impostò la scena principale dei Promessi Sposi. Il dolore
dovette essere acerbo, "il più grande dispiacere", disse
[25] egli,
"della mia vita": Egli ne ebbe, perciò, come appare dalle lettere della

madre e di lui stesso al Tosi, un aggravamento nella nevrosi, e nelle
vertigini. — Ma sotto quella grande scossa morale riacquistò
completamente la sua attività poetica, nuova prova del legame di
questa colla nevrosi. E fu appunto allora che stese con novo stile
l'inno della Pentecoste, l'unico veramente perfetto fra i suoi inni
religiosi; ed in breve tempo; fu allora che concepì il Carmagnola e
poi l'Adelchi; e si noti che nel Carmagnola anche a sfogo della sua
melanconia introduce i cori per poter parlare (come confessò) in
persona propria e senza prestare ai veri personaggi i propri
sentimenti; e infatti egli sfogò molti dei suoi segreti rimpianti nel
dipingere quest'eroe d'animo grande e desideroso di grandi imprese,
che si dibatte con la piccolezza dei suoi tempi.
Un altro campo...
Correr degg'io, dove in periglio sono
Di riportar, forza è pur dirlo, il brutto
Nome d'ingrato, l'insoffribil nome
Di traditor.

Caéitolo III.
Eredità morbosa.
Nè a completare il quadro patologico di Manzoni manca l'influenza
ereditaria.
L'eredità pazzesca e geniale in Manzoni è veramente molteplice,
specie dalla parte della madre. Già Cesare Beccarla, da cui discende
Giulia, la madre del Manzoni, apparteneva a una famiglia nobiliare
dove molti erano i pazzi, da una famiglia di cui diceva Verri: "non
conoscere nè passato nè futuro, e operare quasi per istinto sulle
sensazioni del momento attuale, e padre e madre mostrarsi tanto
deboli e inconsequenti quanto i loro figli. Il padre, anzi, avendo per
sè la borsa e le leggi, ha operato sì che nessuno dei figli ha alcun
riguardo per lui, sino a non lasciargli una porzione di piatto a tavola."
Quanto a lui Beccaria, era abulico, molti giorni restava inerte senza
pensare, senza leggere, stanco, annojato, fin le lettere intime faceva
scrivere dagli amici. Lasciò incomplete quasi tutte le sue opere, a 32
anni abbandonò ogni studio, come più tardi Manzoni che in 88 anni
di vita non ne occupò che 35 come scrittore; fu dimostrato che
aveva allucinazioni, e idee megalomaniache persecutive, e strane
fobie; tremava, anche giunto in età matura, per paura dei folletti e
delle streghe; dormiva in un'amaca appesa al soffitto per sottrarsi
agli spiriti. Avea paura del bujo, dei birri del S. Uffizio, egli che con
audacia sì grande avea proclamati nuovi veri; e dopo aver
combattuto la tortura nei libri, ad un primo sospetto di furto la fece
applicare ad un suo servitore; risoltosi dopo molta esitanza ad andar
a Parigi, dopo 30 miglia vuol ritornare a casa; — giustamente nota
Villari in proposito "tal timidezza in un uomo così ardito nell'idea
essere assai strana". — S'aggiunga: che egli, grande filantropo nei
libri, è senza cuore col padre, col fratello, coi figli, coi poveri, cogli

amici, e colla stessa moglie di cui era gelosissimo e che pure, pochi
mesi dopo morta, sostituì;
[26] proclive ai più strani paradossi, scrive,
per esempio, che egli dà dei consigli per riescire, scrivendo,
saggiamente pazzo.
Manzoni. — È curioso qui
[27] e colpì Graf, come Cantù, come
Bellezza, la strana somiglianza tra il Beccaria e il Manzoni; ambidue
appassionati del nuovo, ammirarono da giovani gli enciclopedisti,
ambedue dopo aver amata pazzamente la moglie, passano
rapidamente alle seconde nozze, e ambidue abbandonano l'amico
più intimo senza una causa chiara; ambidue combattono il
classicismo nello stile; e l'uno da scienziato divien letterato, l'altro da
letterato diviene scienziato. Ambidue lasciano incomplete quasi tutte
le opere; a mezzo il cammin della vita, ed anzi prima abbandonano
ogni studio; ed ambidue mostrano molto scarsa affettività, mancanza
di senso comune, di volontà e quindi incapacità di amministrare, e
lentezza nell'elaborare; e in tutti e due predominò la paura senza
causa, e la timidezza nella vita pratica, in contrasto all'audacia del
pensiero e all'amore del paradosso.
Strano effetto dell'eredità e anche insieme dell'analogia nelle
condizioni della vita.
Giulia. — Quanto alla madre di Manzoni, Giulia Beccaria, già
accennava Foscolo nelle sue lettere esser essa considerata pazza da
molti degli amici di casa; certo nata da madre corrottissima,
calunniatrice del fratello e bisbetica
[28], Giulia sposata, pare contro
sua inclinazione, giovane, a un marito frigido e vecchio, se ne
stancava subito, né lo rivide nemmeno al momento della morte; si
innamorava dell'Imbonati che accompagnò a Parigi e da cui ebbe poi
una pingue eredità; pure a lui ancor vivente diede per successore o
meglio per associato il Fauriel, che ella soleva chiamare Divino; poco
curante, nei giovanissimi anni, del figlio lo abbandonò prima in mani
mercenarie; e poi per nove anni in pessimi collegi: univa alla
scorrettezza dei costumi il bigottismo, specialmente per una certa

Madonna di S. Carlo, di cui, sul serio, credeva aver sperimentata la
protezione; aveva morbose paure di mali e pericoli immaginari; per
tema di ammalarsi lontana da un medico non istava a Brusuglio, e
conservò nella vecchiaia le vesti e le mode della gioventù. Orgogliosa
del nome paterno, sottaceva il cognome coniugale e lo dissimulò fino
nell'epitaffio; ove volle si incidesse: "A Giulia Beccaria — figlia di
Cesare — madre di Alessandro Manzoni"; fino nel testamento (sì
poco era previdente) fece legati che assorbivano tutti i suoi beni.
Questi sono caratteri, nota giustamente il Cappelli (o. c.), più comuni
agli alienati che ai sani.
Da questi fatti notori, dal testamento rogato in suo favore da Carlo
Imbonati, e dalla coincidenza dell'amicizia intimissima sua con la
gravidanza del figlio, dalla somiglianza poi della fisionomia
dell'Imbonati (Petrocchi o. c.) e di molti Carcano (imparentati cogli
Imbonati) col Manzoni stesso, dall'ammirazione eccessiva che essa
seppe destare per lui nel suggestionabile figliuolo e dal ribrezzo
suscitato in questi, più tardi, quando seppe completo il vero, sicchè
distrusse il monumento erettogli in Brusuglio, mandò alla fossa
comune le sue ossa prima preziosamente raccoltevi; e più tardi ne
distrusse e sperperò fino i libri tutti, fin le lettere (Petrocchi) e tentò
far scomparire fin la celebre epistola a lui dedicata, si hanno indizi
non lievi a sospettar vera la voce pubblica, secondo cui non dal
marito legittimo, ma dall'Imbonati sarebbe nato il grande poeta.
E giova notare: che in questo caso si avrebbe una doppia eredità
intellettuale e morale, poichè da uno studio del Buzzetti (I conti
Imbonati, Como 1898) si viene a sapere come il nonno di questo suo
probabile padre fosse Giuseppe Imbonati, geniale poeta, fondatore
di un'accademia letteraria celebre in Milano; il quale, a sua volta,
sarebbe stato (come appunto Manzoni) figlio naturale di un Carlo
Antonio, ricco banchiere di grandissimo ingegno; sicchè da costui si
inizierebbe pel Manzoni l'eredità atavica-geniale... ed erotica (Vedi
albero genealogico, 79ª pagina). Quanto al Carlo, il suo presunto
padre, secondo alcuni era buon poeta e forte pensatore, e degno
allievo di Parini; secondo altri non aveva il genio nè il cuore del

padre, faceva pessimi versi e, quel che è peggio, giocava d'azzardo e
un giorno arrischiovvi tutta la sua tenuta di Cavallasca; impulsivo,
gettò, fra gli insulti più ignobili, un grappolo d'uva in faccia al Baretti.
Ma l'eredità poetica di Manzoni si spiegherebbe meglio, dati questi
fatti, con un'altra radice, avendo il presunto suo nonno Giuseppe
Imbonati sposato una Francesca Bicetti, celebre poetessa dei suoi
tempi, sorella ad un Bicetti dei Buttinoni, notissimo per poemi e per
opere mediche, e per avere primo fra noi introdotto la cura del
vaiuolo cogl'innesti.
La eredità poetica mista ad una pazzesca, in linea non diretta ma
parallela, si trasfonde ancora in un altro ramo, perchè una sorella
Marianna del Conte Carlo Imbonati, si sposò ad un Francesco
Carcano, bizzarro nobile milanese, messo in canzone come fanatico
per le muse dal Goldoni; da cui nacquero Giuseppe Carcano, che
pure bizzarro sciupò un patrimonio ad erigere un teatro, e Vincenzo
padre all'illustre poeta Giulio. Notisi che in molti altri affini ai
Carcano, ch'io conobbi, si son notate spesso genialità insieme e
bizzarrie e quelle fobie del dubbio, così spiccate in Manzoni: una, per
esempio, di cui ebbi speciale conoscenza, rupofoba all'estremo

grado, si bagnava cento volte al giorno; un'altra vedeva veleno
dappertutto; un terzo, amico mio, coltissimo del resto, non può
accostarsi alle vetrine per paura di romperle ed ha la singolarissima
fobia d'esitare a ricevere il denaro dovutogli.
Queste singolari fobie che arieggiano tanto a quelle del Manzoni, e la
grande somiglianza nella fisonomia dei Carcano al Manzoni,
confermerebbero, parmi assai bene, sebben indirettamente, la
ipotesi della consanguineità degl'Imbonati col grande poeta.

Capitolo IV.
Applicazioni letterarie.
Chi credesse un inutile passatempo erudito questa ricerca
dell'anomalie psichiche del Manzoni, se ne dissuaderà subito quando
pensi che essa illumina molta parte della sua opera letteraria e
filosofica: la improvvisa e temporanea decadenza all'epoca degl'inni
sacri e la loro origine, la contraddizione filosofica di metà della sua
vita, i frequenti bisticci, i paradossi così discordanti col fine buon
senso che domina in tutti i suoi libri; essa ci dà anche la chiave di
certe note che vi predominano: la strana frequenza, in ispecie, delle
allusioni a quella che fu uno dei sentimenti più intensi in lui — la
paura.
Il Puccini (Il romanzo psicologico, 1856) ed il Graf nel mirabile studio
Foscolo, Manzoni, e Leopardi, 1898, ebbero a dire che un esempio
delle sue smanie paurose "lo lasciò egli stesso nei Promessi Sposi,
quando descrisse lo spavento di Renzo, solo, nel bosco..., le ansie di
Lucia..., il terrore dello stesso Innominato e di Don Abbondio." E
l'eruditissimo Bellezza, che nella citata opera ne dà sette pagine
intere di prove, ricorda non esservi vizio o virtù, passione o
sentimento che abbia parte più larga o più importante nell'opera
manzoniana, della paura: non essere quasi personaggio nel
romanzo, che non ne sia preso, un momento o l'altro (op. cit.).
Sfuggito all'unghie della giustizia, Renzo si sente addosso "quella
paura di dar sospetto cresciuta allora oltremodo, e fatta tiranna di
tutti i suoi pensieri". S'inoltra poi nel bosco "pieno di fantasie, di
brutte apprensioni", che diventano ben presto "terrore"; e nell'altra
sua gita a Milano un monatto gli grida: "hai avuto una bella paura"
(Bellezza).

Lucia teme ad ogni istante le ire dello sposo all'avventura notturna;
"il terrore, l'angoscia di lei", accorata, affannata, atterrita, quando è
condotta al castello dell'Innominato, durano per quasi tutta "la notte
della paura". E "costernazione" e "terrore" la prendono al ricordo del
voto fatto e al momento d'infrangerlo; per "varî timori" non fa parola
di esso alla madre; la storia di Geltrude la riempì di "paurosa
meraviglia" (Bellezza).
E poi abbiamo la paura: di Ambrogio, desto di sopprassalto dello
sgangherato grido di don Abbondio; di Menico, acciuffato dai bravi;
quella dei bravi stessi ai rintocchi della campana a martello del
vicario di provvisione; dei bravi dell'Innominato, i quali in fatto di
religione, eran stati soliti a prevenir con le beffe la paura che gliene
sarebbe venuta, "ma che al vedere l'effetto che una tal paura aveva
prodotto nel loro padrone, chi più, chi meno, non ce n'era uno che
non gli se n'attaccasse". L'Innominato medesimo prova "quasi un
terrore" nel mettere le mani su Lucia, e i terrori della notte per poco
non lo portano alla disperazione. Persino "quel bestione di Rodrigo"
non ne esce netto d'"apprensione" che la profezia di fra Cristoforo gli
ha messo in corpo, e si risveglia la notte nel sogno finchè lo invade
"il terror della morte".
Don Abbondio è "la personificazione della paura": ha paura di ogni
cosa, a ogni momento; anzi, gli avviene d'averne addosso due nello
stesso tempo, come durante il colloquio con Renzo: di provocare
questo, tacendogli le cose, o di mancare alla ingiunzione fattagli
(Petrocchi , Dell'opera e della vita di A. Manzoni). Nella spedizione al
castello dell'Innominato è in preda ad una "paura ecc.". Un'altra di
diverso genere, gli viene dalla paternale di Federico.
Alla calata dell'esercito alemanno, ha una paura classica; rifugiatosi
presso l'Innominato, circa la conversione del quale ha ancora i suoi
timori, il pensiero d'esser colto in una battaglia gli mette addosso
"uno spavento indistinto, generale, continuo", così da farsi dire da
Perpetua che ha "paura anche di essere difeso ed aiutato".
Si direbbe insomma che il Manzoni si sentisse attratto in modo
speciale da quelli tra i fatti umani in cui predomina questo

sentimento. La storia della Colonna Infame è una serie d'atrocità e di
terrori che si alternano e si collegano l'un l'altro. "Bisogna dire che il
furore soffocasse la paura, che pure era una delle sue cagioni." I
motivi che condussero i giudici a procedere così iniquamente, egli
osserva, furono appunto "la rabbia resa spietata da una lunga
paura... il timore di mancare a un'aspettativa generale... di parer
meno abili se scoprivano degl'innocenti, di voltar contro di sè le grida
della moltitudine... il timore fors'anche di gravi pubblici mali che ne
potessero avvenire".
Le cause e gli effetti molteplici della paura, le varie forme e
manifestazioni, nonchè la natura specifica di essa, trovano la
massima illustrazione nell'opera manzoniana. È magistralmente
descritto il combinarsi di essa con altri sentimenti; così don Abbondio
s'accorge della gran collera che aveva in corpo, e che era stata fin
allora "nascosta e involta nella paura"; il conflitto di perplessità e di
terrori nell'animo di Don Abbondio; lo stato d'animo nell'intervallo;
l'irragionevolezza e il carattere paradossale del sentimento stesso. "Il
timore opera... sulla evidenza, portando talvolta a negar fede alle
cose minacciate, e talvolta a prestargliene più di quella che si
meritino". — "Il sentimento che porta il timoroso a ingrandire o a
immaginarsi il pericolo, è quello stesso che lo fa fuggire dal pericolo
reale... e leva la tranquillità della mente"; la conseguenza ch'esso di
frequente produce, di suscitare in chi ne è preso l'impazienza, o un
sentimento affatto contrario, l'ardire.
"Mi struggo e temo di vederti". — Don Abbondio aspetta Renzo "con
timore e, ad un tempo, con impazienza". — Menico... comandava
"con la forza d'uno spaventato". — Lucia "rinvigorita dallo spavento".
— Agli occhi del padre, Gertrude quantunque ne avesse paura, o...
risoluta per paura, con la stessa prontezza con cui avrebbe preso la
fuga dinanzi un oggetto terribile".
"Ora temeva il giorno... ora lo sospirava." — Renzo "era ansioso
insieme e timoroso di veder qualcheduno".
Anche nella Tragedia e negli Inni del Manzoni Bellezza troverebbe
una varietà infinita di "paure": dal "terrore" onde son presi i tiranni,

a quello dell'"anima" impaurita d'Ermengarda; dai signori romani,
Irsuti per tema le folte criniere, e dai Franchi tenuti sotto le Chiuse
"ad una scola di terror", a Marco senatore, Il rio timor che a goccia a
goccia ei fea — Scender sull'alma mia. E il "turbamento leggero...
che si mostra di quando in quando sul volto delle spose"; e la "paura
del fanciullo, che trema nelle tenebre, senza sapere di che".
Nelle paure della veglia bruna
Te noma il fanciulletto.
"Il terror della caccia" che traluce negli occhi del lupo; "il timore che
nasce anche negli animi più determinati e li rende crudeli"; "il timor
santo e nobile per gli altri"; il "timor veramente nobile e veramente
sapiente, di commetter un'ingiustizia"; il "terror che ispira il coraggio,
avvezzando chi lo sente a nulla temere degli uomini"... (Bellezza).
Vero è che testè il Bertani
[29] pur confermando che tutte le opere
poetiche e romantiche di Manzoni sono zeppe di paura, pretende
spiegarlo con ciò, che di paura è piena la natura umana, di cui
Manzoni era fedel dipintore; ma E. Carrara giustamente gli risponde:
che la scienza moderna dimostra profondo il legame indissolubile fra
la psiche dell'artista e l'opera sua: ora l'esistenza di un profondo e
profuso senso di paura, di timidezza anormale in Manzoni è
confermata da tutti i suoi biografi. A chi obbiettasse che egli deride
nel suo romanzo questo sentimento, si può rispondere che un critico
come Manzoni sa analizzare sè stesso e sa scherzare sui propri
difetti; anzi, solo a questo patto poteva trasfonderli nei suoi
personaggi. (E. Carrara).
E poi, aggiungeremo noi, anche la vanità, anche la vendetta, sono
sentimenti e passioni diffusissime agli uomini: eppure egli non ne
abusa negli scritti, quasi anzi non ne usa, come invece fa della
paura.
Si notò dal Bellezza, op. c. pag. 234, e dal Graf che anche la
frequenza dei caratteri deboli, abulici, come di Lucia, di Renzo, del
grande Romanzo ha una prima fonte nella sua stessa debolezza
d'animo.

E così l'eccessiva incertezza e pigrizia di don Ferrante schivafatiche,
riprodurrebbe, secondo Graf, le analoghe sue tendenze (v. s.) e così
si spiegano pure le frequenti incertezze e i dubbi dei suoi
personaggi, di Renzo, p. es., se troverebbe Lucia o no, se Lucia
rinunzierebbe o no al voto; — fino l'Innominato e fin Federico, fin
don Rodrigo son sospesi per più giorni tra il sì e il no, l'uno più
dell'altro; e così si spiega la perplessità di Geltrude, e fin quella dei
bravi dell'Innominato.
Bisticci. — E la psicosi spiega l'insorgere ogni tratto in una mente
così quadra, che fu giustamente detta da Graf peccante in rapporto
alla poesia d'eccesso nel ragionare, di quegli strani paradossi, che
molte volte basansi sui contrasti dei termini, qualche volta, come nei
ragionamenti dei pazzi, in quelli dei suoni.
Così "una guerra difensiva di chi ha ragione è buona; ma non può
esistere se non con la condizione d'una guerra ingiusta". Che fa l'arte
della guerra? — seguita ad argomentare; — "insegna a uno il mezzo
di fare una cosa, all'altro il mezzo di impedirla". "E però ha un
intento dubbio, anzi contraddittorio: aiutare e dirigere chi vuole una
cosa e chi vuole che la cosa non sia".
E dopo aver constatato che "le verità matematiche si
contrappongono sovente alle verità morali, come aventi una certezza
di un genere che non si può trovare in queste", sostiene e dimostra
come la cosa stia per l'appunto alla rovescia; e come, cioè, le verità
morali abbiano, nell'applicazione, il vantaggio d'una minore
incertezza!! — E fa le meraviglie del fatto che "v'ha uomini i quali
negano le verità morali astratte, mentre non ve n'ha che neghino le
matematiche."
Ecco alcuna delle sentenze o bisticci che ci trasmise di lui il Bonghi:
"Gli animali sono, eppure non son loro"; Noi siamo tra due lacci
scorsoi, o ci affoga l'uno o ci affoga l'altro; e, che è più strano, per
non lasciarsi affogare nè dall'uno nè dall'altro, dobbiamo stringerli
tutti e due. — "Sovente si mette più presso, e più dentro alla cosa
medesima, chi se ne fa più lontano". (Stresiane).

Egli trova che "lo spirito storico del dramma è in molti punti affatto
opposto a quello che esce dalle più riputate storie moderne"; e che,
mentre la tragedia antica si fondava sulla cognizione che lo
spettatore dovea avere dei soggetti, la moderna è costretta a fare
assegnamento sulla dimenticanza; che "le mutazioni nella lingua
sono un inconveniente, anche quando sono un vantaggio"; che "per
essere creatore in fatto di lingue, non c'è niente come il saper poco
quella in cui si parla o si scrive".
E questa tendenza paradossale si infiltra nelle frasi; e basti ricordare
solo alcune delle molte annotate dal Bellezza (v. c.), come queste:
"Nemico mio carissimo, — indotto e sapiente contadino, —
inconveniente prezioso, — felice prepotenza, — irrisolutezza
arrogante, — ammirazione ingiuriosa, — umilmente altera, — dolce
in vista ed umano, e insiem feroce, — devoto suicida, — gentili
masnadieri, — amabil terror, — gaudio amaro, — vil trionfo, — tristo
conforto, — tristo vincitore, — squisiti digiuni, — lieto error, — lieto
ribrezzo, — dolci ferite, — povero signore, — giorno tanto temuto e
bramato, — età sucida e sfarzosa, — (sentimento), imperioso
insieme e soave, — cenci sfarzosi, — nome illustre e infame, —
ignoranza coraggiosa e guardinga, — trista allegrezza. — Pensò o
piuttosto non ci pensò, — voglio andare avanti o piuttosto tornare
indietro, — l'effetto o piuttosto la mancanza dell'effetto, — solo un
bene di quel genere, o piuttosto quel bene fuori d'ogni genere, —
non badiamo alle parole, o, per dir meglio, badiamoci bene, perchè
proprio qui non ci abbiano a menar fuori di strada." —
Ora questi bisticci, queste — come li chiamava egli stesso, —
trappole di parole che si basano su contrasti di suoni, non si possono
spiegare senza lo influsso morboso in uno che le stigmatizzava così
fieramente nel Dialogo dell'invenzione, in uno che spesso ripeteva
essere i traslati traditori, e che le parole, "se non ci si bada bene,
menan fuor di strada". (Opere varie, pag. 829-1870).
Ora è noto che gli ammalati di ossessione hanno spesso tendenza a
frasi ed idee in contrasto col loro pensiero e fra di loro a dire p. e.,
"Vi ho in c.... invece: Vi ho in cuore" che pur pensano (Krafft, Ebb.

Trad. de Psych. 543). Maledetto per benedetto (Raggi, Archivio
Italiano per le Mal. Nevrose 1887) e Seglas — altrettanto vedremo
qui confessarci di Cardano (pag. 106).

Tav. II.
AUTOGRAFI DI MANZONI
Fig. 1.
Autografi di Manzoni. (Bonghi. — Opere inedite di Manzoni).
Fig. 2.