0% found this document useful (0 votes)
3 views

Simplified JavaScript for Very Important Programmers The Fast Track to Mastering Essential JavaScript Concepts Ebenezer Don download

The document is a promotional text for the book 'Simplified JavaScript for Very Important Programmers' by Ebenezer Don, which aims to help readers master essential JavaScript concepts. It includes links to download the book and other related resources, as well as a brief overview of the book's contents. The book was published on March 10, 2023, and is available for purchase on Leanpub.

Uploaded by

lamkeebiegeq0
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Simplified JavaScript for Very Important Programmers The Fast Track to Mastering Essential JavaScript Concepts Ebenezer Don download

The document is a promotional text for the book 'Simplified JavaScript for Very Important Programmers' by Ebenezer Don, which aims to help readers master essential JavaScript concepts. It includes links to download the book and other related resources, as well as a brief overview of the book's contents. The book was published on March 10, 2023, and is available for purchase on Leanpub.

Uploaded by

lamkeebiegeq0
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

Simplified JavaScript for Very Important

Programmers The Fast Track to Mastering


Essential JavaScript Concepts Ebenezer Don pdf
download
https://ebookmeta.com/product/simplified-javascript-for-very-
important-programmers-the-fast-track-to-mastering-essential-
javascript-concepts-ebenezer-don/

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!

Git Prodigy Mastering Version Control with Git and


GitHub Ebenezer Don

https://ebookmeta.com/product/git-prodigy-mastering-version-
control-with-git-and-github-ebenezer-don/

Mastering JavaScript Functional Programming 1st Edition


Federico Kereki

https://ebookmeta.com/product/mastering-javascript-functional-
programming-1st-edition-federico-kereki/

Everyday Go The Fast Track for Golang Alex Ellis

https://ebookmeta.com/product/everyday-go-the-fast-track-for-
golang-alex-ellis/

Dead West Matt Goldman

https://ebookmeta.com/product/dead-west-matt-goldman/
Pharmacology: An Introduction 8th Edition Henry Hitner

https://ebookmeta.com/product/pharmacology-an-introduction-8th-
edition-henry-hitner/

Blackstone Outdoor Gas Griddle Cookbook 500 Quick Easy


Mouth Watering Recipes On a Budget to Grill Perfect
Juicy Meat 12 Pro Tips Tricks to Get the Most Out of
Your Blackstone Gas Hunter Buck
https://ebookmeta.com/product/blackstone-outdoor-gas-griddle-
cookbook-500-quick-easy-mouth-watering-recipes-on-a-budget-to-
grill-perfect-juicy-meat-12-pro-tips-tricks-to-get-the-most-out-
of-your-blackstone-gas-hunter-buck/

Colditz. Prisoners of the Castle Ben Macintyre

https://ebookmeta.com/product/colditz-prisoners-of-the-castle-
ben-macintyre/

Oil Barrons 02 0 Make Me Shiver 1st Edition Marie


Johnston

https://ebookmeta.com/product/oil-barrons-02-0-make-me-
shiver-1st-edition-marie-johnston/

iOS Animations by Tutorials Seventh Edition Setting


Swift in Motion Raywenderlich Tutorial Team

https://ebookmeta.com/product/ios-animations-by-tutorials-
seventh-edition-setting-swift-in-motion-raywenderlich-tutorial-
team/
Affective Encounters An Ethnography of Everyday Life
Among Chinese Migrants in Zambia Di Wu

https://ebookmeta.com/product/affective-encounters-an-
ethnography-of-everyday-life-among-chinese-migrants-in-zambia-di-
wu/
Simplified JavaScript for Very
Important Programmers
The Fast Track to Mastering Essential
JavaScript Concepts

Ebenezer Don
This book is for sale at http://leanpub.com/vip-javascript

This version was published on 2023-03-10

This is a Leanpub book. Leanpub empowers authors and


publishers with the Lean Publishing process. Lean Publishing is
the act of publishing an in-progress ebook using lightweight tools
and many iterations to get reader feedback, pivot until you have
the right book and build traction once you do.

© 2023 Ebenezer Don


Contents

Getting The Book . . . . . . . . . . . . . . . . . . . . . . . . 1

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

What is JavaScript and How Does it Work? . . . . . . . . 3


How Does JavaScript Work? . . . . . . . . . . . . . . . . . 4
History of JavaScript . . . . . . . . . . . . . . . . . . . . . 4
Differences Between JavaScript and HTML/CSS . . . . . 5
Uses of JavaScript across multiple fields . . . . . . . . . . 6

How to write and run JavaScript code . . . . . . . . . . . . 8


Using a web browser . . . . . . . . . . . . . . . . . . . . . 8
Using an online code editor . . . . . . . . . . . . . . . . . 9
Using an offline code editor . . . . . . . . . . . . . . . . . 9

JavaScript syntax and Data types . . . . . . . . . . . . . . . 10


Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Comments in JavaScript . . . . . . . . . . . . . . . . . . . 13
Basic conditional statements (If-else) . . . . . . . . . . . . 15

Variables in JavaScript . . . . . . . . . . . . . . . . . . . . . 18
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Variable declaration and assignment . . . . . . . . . . . . 20
Variable naming rules and conventions . . . . . . . . . . 22

Basic JavaScript operators . . . . . . . . . . . . . . . . . . . 26


CONTENTS

Arithmetic operators . . . . . . . . . . . . . . . . . . . . . 26
The Concatenation operator . . . . . . . . . . . . . . . . . 28
Assignment operators . . . . . . . . . . . . . . . . . . . . . 29
Comparison operators . . . . . . . . . . . . . . . . . . . . 30
Logical operators . . . . . . . . . . . . . . . . . . . . . . . 31

Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
How to define functions in JavaScript . . . . . . . . . . . 33
The return keyword . . . . . . . . . . . . . . . . . . . . . . 34
Function Parameters vs Arguments . . . . . . . . . . . . . 36
More on the return statement . . . . . . . . . . . . . . . . 36
Anonymous functions . . . . . . . . . . . . . . . . . . . . 37
Multi-line return statements . . . . . . . . . . . . . . . . . 39
Arrow Functions . . . . . . . . . . . . . . . . . . . . . . . 40
Functions best practices . . . . . . . . . . . . . . . . . . . 41
JavaScript String Methods . . . . . . . . . . . . . . . . . . 42
JS Math functions . . . . . . . . . . . . . . . . . . . . . . . 44

Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Declaring and Initializing Arrays . . . . . . . . . . . . . . 48
Accessing and modifying Array Elements . . . . . . . . . 49
Array Length . . . . . . . . . . . . . . . . . . . . . . . . . 50
Array Methods . . . . . . . . . . . . . . . . . . . . . . . . 51

Higher Order Functions (HOFs) and Callbacks . . . . . . . 58


Creating Higher-order functions . . . . . . . . . . . . . . 60
Built-in HOFs and Array Methods . . . . . . . . . . . . . 61
The JavaScript Timing methods . . . . . . . . . . . . . . . 72

JavaScript Objects . . . . . . . . . . . . . . . . . . . . . . . . 76
Rules and Guidelines for creating objects . . . . . . . . . 77
Adding, modifying and Removing Properties . . . . . . . 82
Object.prototype . . . . . . . . . . . . . . . . . . . . . . . . 85
Object methods . . . . . . . . . . . . . . . . . . . . . . . . 87
Object destructuring . . . . . . . . . . . . . . . . . . . . . 90
CONTENTS

Conditional Statements . . . . . . . . . . . . . . . . . . . . . 94
Else-if statements in JavaScript . . . . . . . . . . . . . . . 94
Nested if statements . . . . . . . . . . . . . . . . . . . . . . 97
The Switch statement . . . . . . . . . . . . . . . . . . . . . 100
The ternary operator . . . . . . . . . . . . . . . . . . . . . 106

Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
The for Loop . . . . . . . . . . . . . . . . . . . . . . . . . . 109
The for...in loop . . . . . . . . . . . . . . . . . . . . . . . 113
The for...of loop . . . . . . . . . . . . . . . . . . . . . . . 115
The while Loop . . . . . . . . . . . . . . . . . . . . . . . . 117
The do...while Loop . . . . . . . . . . . . . . . . . . . . . 119

The Document Object Model (DOM) . . . . . . . . . . . . . 123


Accessing the DOM . . . . . . . . . . . . . . . . . . . . . . 125
Modifying DOM Elements . . . . . . . . . . . . . . . . . . 138
Removing elements from the DOM . . . . . . . . . . . . . 147
Traversing the DOM . . . . . . . . . . . . . . . . . . . . . 148
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

How to include JavaScript in an HTML file . . . . . . . . . 153


Writing JavaScript in the HTML file (inline JavaScript) . 153
Creating a separate JavaScript file (external JavaScript) . 154
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Browser Events . . . . . . . . . . . . . . . . . . . . . . . . . . 158


Event Object Properties and Methods . . . . . . . . . . . . 161
Browser Event types and listeners . . . . . . . . . . . . . . 165
Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . 166
Form Events . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Window Events . . . . . . . . . . . . . . . . . . . . . . . . 166

Browser Storage . . . . . . . . . . . . . . . . . . . . . . . . . 169


Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
LocalStorage and SessionStorage . . . . . . . . . . . . . . 172
CONTENTS

Building A Todo List App with JavaScript . . . . . . . . . . 178


Using HTML to structure our app . . . . . . . . . . . . . . 178
Using JavaScript to add functionality to our app . . . . . 179
Rendering saved tasks to the browser . . . . . . . . . . . . 181
Adding tasks to the list . . . . . . . . . . . . . . . . . . . . 183
Marking tasks as complete . . . . . . . . . . . . . . . . . . 185
Removing Tasks . . . . . . . . . . . . . . . . . . . . . . . . 186
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Asynchronous JavaScript . . . . . . . . . . . . . . . . . . . . 192


What is Asynchronous JavaScript? . . . . . . . . . . . . . 192
Promises . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Promise Methods . . . . . . . . . . . . . . . . . . . . . . . 197
Making HTTP Requests with Promises and the Fetch API 202
Async/Await . . . . . . . . . . . . . . . . . . . . . . . . . . 207

Working with Date and Time . . . . . . . . . . . . . . . . . 212


Creating a Date Object . . . . . . . . . . . . . . . . . . . . 212
Getting the Date and Time Components . . . . . . . . . . 214
Setting the Date and Time Components . . . . . . . . . . 216
Formatting Dates and Times . . . . . . . . . . . . . . . . . 216

Final Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . 219


Getting The Book
I’m thrilled that you’re interested in this book! To get your hands on
a legitimate copy, I highly recommend visiting vipjavascript.com*,
Leanpub.com/vip-javascript† or selar.co/vip-javascript‡.
By purchasing from the official websites, you’ll receive access to the
latest updates and corrections, and you’ll be supporting my hard
work as an author.
I kindly ask that you refrain from sharing or pirating the book.
I’ve put in countless hours of work, and it’s important that I’m
compensated for my efforts.
Thank you for your support, and happy reading!
*https://vipjavascript.com
†https://leanpub.com/vip-javascript
‡https://selar.co/vip-javascript
Introduction
“Simplified JavaScript for Very Important Programmers” is a re-
freshing and practical guide for beginners who want to master ev-
ery essential aspect of JavaScript. In this book, I offer a streamlined
approach to learning JavaScript with relatable real-life examples
that make the concepts easy to understand, even for those without
programming experience.
I’ve divided this book into two parts. The first part is designed
for everyone learning JavaScript, and the second part focuses on
using JavaScript on the web, building on the foundational concepts
covered in the first part.
I’ve written everything in clear and concise language, making it
easy for everyone to follow along and grasp. Whether you’re a
student, an entrepreneur, or simply someone interested in program-
ming, this book will guide you through the essential concepts of
JavaScript with ease and efficiency.
From variables and operators to loops, functions and objects,
we’ll cover everything you need to know to become a competent
JavaScript programmer. The examples and exercises throughout
this book are designed to reinforce your learning and help you
apply your knowledge in real-world scenarios.
If you’re looking for a practical and enjoyable way to learn
JavaScript, you’re reading the perfect book.
What is JavaScript and
How Does it Work?
JavaScript is a programming language that was initially developed
as a means to add dynamic and interactive elements to websites.
Today, it is one of the most popular programming languages in
the world and is used for a wide range of applications, including
web development, mobile app development, server-side scripting,
machine learning, game development, and more. When learning
web development, it is essential to understand how JavaScript
works and how you can use it to build dynamic websites and add
interactivity to your web pages.
JavaScript is a dynamically-typed language, which means that you
can use it to store different types of information without telling
the computer what you’ll put there ahead of time. Since you don’t
have to keep track of so many rules, it’s usually easier to read
and write JavaScript than other programming languages like C++,
Java, or Rust. However, this also means that you can make mistakes
that are hard to catch, so it’s important to be careful when writing
JavaScript code.
JavaScript is often used in conjunction with HTML and CSS to
create interactive and dynamic websites. One of its main features
is its ability to manipulate and interact with web pages; it can be
used to change the content and layout of a webpage, respond to user
input, and communicate with servers to retrieve and update data.
So, while HTML provides the structure and content of a webpage,
and CSS defines its style and layout, JavaScript adds behavior and
interactivity.
What is JavaScript and How Does it Work? 4

How Does JavaScript Work?


When a JavaScript program is run, the computer reads the code and
follows its instructions.
In the case of web development, JavaScript is usually run in a
web browser like Google Chrome or Mozilla Firefox. When you
open a webpage that contains JavaScript, your browser reads the
JavaScript code and uses it to interact with and modify the content
of the webpage, its layout, and its behavior.
You can also use JavaScript in other contexts like mobile app
development and server-side programming, in which case, the
JavaScript code is run on a different type of device or platform, but
the process of executing the code is similar.
One thing to note is that JavaScript is an interpreted language,
meaning it is not compiled (translated into machine code) before
it is run. Instead, the computer interprets the code as it is being
executed. This makes writing and debugging JavaScript programs
easier, but it can also make them run slower than programs written
in compiled languages.

History of JavaScript
JavaScript was created by Brendan Eich in 1995 and was first
introduced with the release of Netscape Navigator 2.0, a popular
web browser at the time. JavaScript was initially called Mocha but
later renamed to LiveScript and then to JavaScript in an attempt
to take advantage of the buzz surrounding the Java programming
language.
JavaScript quickly gained popularity among web developers and be-
came supported by other major web browsers like Internet Explorer
and Safari. In 1996, JavaScript was standardized by the European
What is JavaScript and How Does it Work? 5

Computer Manufacturers Association (ECMA) as ECMAScript,


which remains its official name today.

Differences Between JavaScript and


HTML/CSS
JavaScript is often used with HTML and CSS to build websites.
However, there are some important differences between the three
languages. One crucial difference is that JavaScript is a program-
ming language, while HTML is a markup language and CSS is a
style sheet used to describe the appearance of a webpage. So, you’ll
often find JavaScript more difficult to learn than HTML and CSS.
Some key features of JavaSCript that are not found in HTML and
CSS include:

• The ability to execute code based on conditions or events


• The ability to iterate through data and perform actions on
multiple elements
• The ability to create and manipulate different types of data
• The ability to make requests to servers and retrieve data

While HTML and CSS are important for defining the content and
appearance of a webpage, without JavaScript, it’s difficult to add
interactivity to your webpage that’ll make users love it. JavaScript
allows developers to build more sophisticated and engaging user
experiences, and it is a critical component of modern web develop-
ment.
What is JavaScript and How Does it Work? 6

Uses of JavaScript across multiple


fields
Apart from web development, you can use JavaScript for a wide
range of applications, including:

Server-side programming

When you visit a website, your web browser sends a request to


the website’s server, which then executes the code responsible
for handling that request and generating an appropriate response.
Tools like Node.js and Deno make it possible to run JavaScript on
the server instead of a browser. This enables developers to build
scalable, high-performance applications that can handle many con-
current users.

Mobile app development

You can use JavaScript to build cross-platform mobile apps with


tools like Cordova, React Native, and NativeScript. These tools
allow developers to write JavaScript code that is compiled and run
on a mobile device rather than in a browser.

Game development

You can also use JavaScript to build browser-based games with tools
like Phaser and Babylon.js. These tools allow you to create 2D and
3D games that can be played in a web browser.
What is JavaScript and How Does it Work? 7

Data visualization

JavaScript libraries like D3.js and Highcharts can be used to create


interactive data visualizations for websites and applications.

Robotics

You can use JavaScript to control and program robots using plat-
forms like NodeBots and Johnny-Five.

Internet of Things (IoT)

JavaScript can be used to build applications that interact with and


control connected devices, such as smart home appliances and
sensors.

Machine learning

With JavaScript libraries like TensorFlow.js and Brain.js, you can


build machine-learning models and incorporate them into web
applications.
How to write and run
JavaScript code
The best way to learn JavaScript is by writing JavaScript. Let’s
explore the different ways you can write and run JavaScript code
so that it’ll be easy for you to practice whatever you learn.

Using a web browser


One of the simplest and most accessible ways to write JavaScript
code is by using a web browser. Most modern web browsers, such
as Google Chrome, Mozilla Firefox, and Safari, have a built-in
JavaScript engine that allows you to write and run JavaScript code
directly in the browser.
To write JavaScript code in a web browser, you can use the
browser’s developer tools. To open the developer tools in Google
Chrome, right-click on any webpage and select “Inspect” from the
context menu. Alternatively, you can press Ctrl + Shift + I on a
Windows or Linux computer, or Command + Option + I on a Mac.
Once the developer tools window is open, navigate to the “Console”
tab, where you’ll be able to write your JavaScript code. For example,
you can try typing the following code into the console, but with
your name instead of mine:

1 console.log('My name is Ebenezer Don')


2 console.log('JavaScript is awesome!')

To run your JavaScript code, press the Enter key on your keyboard.
This will print the message “My name is Ebenezer Don” and
How to write and run JavaScript code 9

“JavaScript is awesome!” to the console. Good job! I’ll explain every


part of the code you just wrote later on.

Using an online code editor


Another way to write and run JavaScript code is by using an online
code editor or online Integrated Development Environment (IDE).
There are many online code editors and IDEs available that allow
you to write and run JavaScript code from your web browser. Some
popular options include CodePen, JSFiddle, and JS Bin.
You need an internet connection to use an online code editor, but it
has several advantages too. First, it allows you to write and run code
from anywhere. Second, you can easily share your code with others
through links. Third, many online code editors and IDEs have built-
in features that can ease the process of writing code and checking
for errors.

Using an offline code editor


There are also several offline code editors and IDEs you can use
to write and run JavaScript code. Some popular options include
Eclipse, NetBeans, Visual Studio and Visual Studio Code (with the
help of extensions). These IDEs need to be installed on your local
computer and typically have more features and functionality than
online code editors. They are often used for more complex projects,
and even if you don’t start with them, you’ll eventually need one
as you progress.
The easiest to get started with is your browser console, so I
recommend writing and running your first JavaScript code on it,
and when you do, take a screenshot and save it where you can
access it a year from now. I’m sure you’ll be proud of your progress.
Another Random Scribd Document
with Unrelated Content
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™


electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for


the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.

1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,


the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.

The Foundation’s business office is located at 809 North 1500 West,


Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws regulating


charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states where


we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot make


any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.

Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.

You might also like