We may earn an affiliate commission when you visit our partners.
Course image
Anthony Alicea

Truly knowing Javascript will get you a job, and enable you to build quality web and server applications.

NOTE: This course includes information on ECMAScript 6 (ES6) the next version of Javascript.

Read more

Truly knowing Javascript will get you a job, and enable you to build quality web and server applications.

NOTE: This course includes information on ECMAScript 6 (ES6) the next version of Javascript.

You will find clarity in the parts that others, even experienced coders, may find weird, odd, and at times incomprehensible. You'll learn the beauty and deceptive power of this language that is at the forefront of modern software development today.

We'll take a deep dive into the source code of popular frameworks such as jQuery and Underscore to see how you can use your understanding of Javascript to learn (and borrow) from other's good code.

Finally, you'll learn the foundations of how to build your own Javascript framework or library.

What you'll learn in this course will make you a better Javascript developer, and improve your abilities in AngularJS, NodeJS, jQuery, React, Ember, MongoDB, and all other Javascript-based technologies.

Learn to love Javascript, and code in it well.

Note: In this course you'll also get downloadable source code. You will often be provided with 'starter' code, giving you the base for you to start writing your code, and 'finished' code to compare your code to.

Enroll now

What's inside

Learning objectives

  • Grasp how javascript works and it's fundamental concepts
  • Write solid, good javascript code
  • Understand advanced concepts such as closures, prototypal inheritance, iifes, and much more.
  • Drastically improve your ability to debug problems in javascript.
  • Avoid common pitfalls and mistakes other javascript coders make
  • Understand the source code of popular javascript frameworks
  • Build your own javascript framework or library

Syllabus

Getting Started
Introduction and The Goal of This Course
Setup
Setup (Visual Studio Code)
Read more
Big Words and Javascript
Watching this Course in High Definition
Understanding, Frameworks, and The Weird Parts
Execution Contexts and Lexical Environments
Conceptual Aside: Syntax Parsers, Execution Contexts, and Lexical Environments
Conceptual Aside: Name/Value Pairs and Objects
Downloading Source Code for This Course
The Global Environment and The Global Object
The Execution Context - Creation and Hoisting
Conceptual Aside: Javascript and 'undefined'
The Execution Context - Code Execution
Conceptual Aside: Single Threaded, Synchronous Execution
Function Invocation and the Execution Stack
Functions, Context, and Variable Environments
The Scope Chain
Scope, ES6, and let
What About Asynchronous Callbacks?
Types and Operators
Conceptual Aside: Types and Javascript
Primitive Types
Conceptual Aside: Operators
Operator Precedence and Associativity
Operator Precedence and Associativity Table
Conceptual Aside: Coercion
Comparison Operators
Equality Comparisons Table
Existence and Booleans
Default Values
Framework Aside: Default Values
Objects and Functions
Objects and the Dot
Objects and Object Literals
Framework Aside: Faking Namespaces
JSON and Object Literals
Functions are Objects
Function Statements and Function Expressions
Conceptual Aside: By Value vs By Reference
Objects, Functions, and 'this'
Conceptual Aside: Arrays - Collections of Anything
'arguments' and spread
Framework Aside: Function Overloading
Conceptual Aside: Syntax Parsers
Dangerous Aside: Automatic Semicolon Insertion
Framework Aside: Whitespace
Immediately Invoked Functions Expressions (IIFEs)
Framework Aside: IIFEs and Safe Code
Understanding Closures
Understanding Closures - Part 2
Framework Aside: Function Factories
Closures and Callbacks
call(), apply(), and bind()
Functional Programming
Functional Programming - Part 2
Object-Oriented Javascript and Prototypal Inheritance
Conceptual Aside: Classical vs Prototypal Inheritance
Understanding the Prototype
Everything is an Object (or a primitive)
Reflection and Extend
Building Objects
Function Constructors, 'new', and the History of Javascript
Function Constructors and '.prototype'
Dangerous Aside: 'new' and functions
Conceptual Aside: Built-In Function Constructors
Dangerous Aside: Built-In Function Constructors
Dangerous Aside: Arrays and for..in
Object.create and Pure Prototypal Inheritance
ES6 and Classes
Odds and Ends
Initialization
'typeof' , 'instanceof', and Figuring Out What Something Is
Strict Mode
Strict Mode Reference
Examining Famous Frameworks and Libraries
Learning From Other's Good Code
Deep Dive into Source Code: jQuery - Part 1
Deep Dive into Source Code: jQuery - Part 2
Deep Dive into Source Code: jQuery - Part 3
Let's Build a Framework / Library!
Requirements
Structuring Safe Code
Our Object and Its Prototype
Properties and Chainable Methods
Adding jQuery Support
Good Commenting
Let's Use Our Framework
A Side Note
EXTRA: TypeScript, ES6, and Transpiled Languages
TypeScript, ES6, and Transpiled Languages
Transpiled Languages References
EXTRA: Getting Ready for ECMAScript 6
Existing and Upcoming Features
ES6 Features Reference
Gain in-depth knowledge of ES6 features and topics
ES6 In-Depth
Promises, Async, and Await
Conclusion

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches foundational JavaScript concepts and advanced topics, making it suitable for both beginners and experienced coders
Provides a deep dive into popular frameworks like jQuery and Underscore, enabling learners to enhance their understanding of JavaScript
Focuses on building a strong foundation in JavaScript, which is essential for success in web and server-side development
Taught by Anthony Alicea, an experienced instructor recognized for his expertise in JavaScript
Includes downloadable source code and starter code to assist learners in their coding journey
May not be suitable for learners with no prior programming experience

Save this course

Save JavaScript: Understanding the Weird Parts to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in JavaScript: Understanding the Weird Parts with these activities:
Review basic Javascript concepts
Familiarize yourself with the fundamentals of Javascript.
Browse courses on JavaScript
Show steps
  • Revise the syntax of Javascript.
  • Review basic programming constructs like variables, data types, and control flow.
  • Practice writing simple Javascript functions.
Follow online tutorials for intermediate Javascript
Supplement your learning with tutorials on advanced Javascript concepts.
Browse courses on JavaScript
Show steps
  • Search for online tutorials covering topics like closures, prototypal inheritance, and event handling.
  • Follow the tutorials step-by-step and implement the concepts in your own code.
  • Troubleshoot any errors you encounter.
Read classic Javascript books like Eloquent Javascript
Gain a deeper understanding of Javascript from an authoritative source.
Show steps
  • Get a copy of the book.
  • Read the book thoroughly.
  • Take notes and highlight important concepts.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Solve coding challenges on online platforms
Test your understanding of Javascript by solving coding challenges.
Browse courses on JavaScript
Show steps
  • Register on online coding platforms like Codewars or LeetCode.
  • Choose a challenge that matches your skill level.
  • Implement your solution in Javascript.
  • Submit your solution and review the feedback.
Write blog posts or articles about Javascript topics
Reinforce your understanding of Javascript by explaining concepts to others.
Browse courses on JavaScript
Show steps
  • Choose a Javascript topic that you are familiar with.
  • Research and gather information on the topic.
  • Write a well-structured blog post or article.
  • Publish your content on a blog or website.
Build a personal website or web application
Solidify your Javascript skills by creating a practical project.
Browse courses on JavaScript
Show steps
  • Plan and design your website or web application.
  • Implement the frontend and backend using Javascript.
  • Test and debug your project.
  • Deploy your project online.
Contribute to open-source Javascript projects
Gain practical experience and make a valuable contribution to the Javascript community.
Browse courses on JavaScript
Show steps
  • Find an open-source Javascript project that interests you.
  • Read the project documentation and understand the codebase.
  • Identify an issue or feature that you can contribute to.
  • Fork the project and make your changes.
  • Submit a pull request and collaborate with the project maintainers.
Participate in Javascript hackathons or coding contests
Challenge yourself and showcase your Javascript abilities in a competitive setting.
Browse courses on JavaScript
Show steps
  • Find a Javascript hackathon or coding contest that aligns with your interests.
  • Form a team or work solo.
  • Develop a solution to the challenge.
  • Submit your solution and wait for the results.

Career center

Learners who complete JavaScript: Understanding the Weird Parts will develop knowledge and skills that may be useful to these careers:
Full-Stack Developer
Full-Stack Developers have expertise in both front-end and back-end development. As JavaScript is used throughout the stack, from user interfaces to server-side logic, this course offers a comprehensive understanding of JavaScript, enabling Full-Stack Developers to build complete web applications confidently.
JavaScript Developer
JavaScript Developers specialize in designing, developing, and maintaining web and software applications using JavaScript. This course provides in-depth knowledge of the fundamentals of JavaScript and its advanced concepts, making it a valuable resource for JavaScript Developers who want to advance their skills and understanding of the language.
Front-End Developer
Front-End Developers focus on the user interface and experience of a website or application. JavaScript is a cornerstone of front-end development for creating interactive elements and enhancing user interaction. This course offers a comprehensive understanding of JavaScript, enabling Front-End Developers to build dynamic and engaging user interfaces.
Back-End Developer
Back-End Developers handle the server-side logic and data management of web applications. Node.js, a JavaScript runtime environment, has gained popularity for back-end development. This course provides a solid foundation in JavaScript and its concepts, equipping Back-End Developers with the knowledge to build robust and scalable back-end systems.
Web Developer
Web Developers are responsible for the design and development of websites and web applications. Since JavaScript is widely used for interactive web elements and dynamic content, having a strong understanding of JavaScript is essential for Web Developers. This course delves into the intricacies of JavaScript, helping you gain a deeper understanding and become a more proficient Web Developer.
Computer Programmer
Computer Programmers write and maintain the code that powers software applications and systems. JavaScript is widely used in various domains, including web development, mobile apps, and server-side programming. This course offers a comprehensive understanding of JavaScript's fundamentals and advanced concepts, enabling Computer Programmers to confidently develop and maintain robust software solutions.
Technical Lead
Technical Leads mentor and guide software development teams. They ensure the technical quality and efficiency of software projects. This course provides a comprehensive understanding of JavaScript and its advanced concepts. By gaining this knowledge, Technical Leads can effectively support and direct their teams in developing high-quality software solutions.
Machine Learning Engineer
Machine Learning Engineers design and develop machine learning models and systems. JavaScript is used in machine learning for tasks such as data preprocessing, model training, and visualization. This course provides a comprehensive understanding of JavaScript and its libraries for machine learning. By taking this course, Machine Learning Engineers can gain the necessary skills to build and deploy machine learning models effectively.
Software Quality Assurance Analyst
Software Quality Assurance Analysts test and evaluate software to ensure it meets quality standards. They often work with developers to identify and resolve issues. This course provides a deep understanding of JavaScript and its advanced concepts, enabling Software Quality Assurance Analysts to effectively evaluate the quality of JavaScript code and identify potential problems.
Mobile Developer
Mobile Developers create and maintain applications for mobile devices such as smartphones and tablets. JavaScript frameworks like React Native allow developers to build cross-platform mobile apps. This course provides a solid understanding of JavaScript and its frameworks, making it beneficial for Mobile Developers who want to expand their skillset and confidently build mobile applications.
Data Scientist
Data Scientists use scientific methods and algorithms to extract insights from data. JavaScript is increasingly used for data analysis and visualization. This course offers a solid foundation in JavaScript and its libraries for data manipulation and visualization. By taking this course, Data Scientists can expand their skillset and enhance their ability to analyze and present data effectively.
Software Architect
Software Architects design and oversee the development of software systems. They need a deep understanding of programming languages and their applications. JavaScript, being a versatile language used in various domains, is valuable for Software Architects. This course offers insights into the intricacies of JavaScript, helping Software Architects make informed decisions and effectively guide software development projects.
Computer Scientist
Computer Scientists research and develop new computing technologies and applications. JavaScript, being a versatile language with a wide range of applications, is often used in research and development projects. This course provides a deep understanding of JavaScript's core concepts and advanced features, enabling Computer Scientists to leverage the language effectively in their research and development endeavors.
Software Engineer
Software Engineers use computer science theory and software development to analyze user needs, design applications, and create solutions using software coding. Understanding Javascript is crucial in this role as it is an essential language for web development and software applications. This course can help build a foundation in JavaScript and expand your understanding of its more complex aspects to become a more well-rounded Software Engineer.
UI/UX Designer
UI/UX Designers focus on the user experience and interface of digital products. While not directly coding in JavaScript, having a solid understanding of JavaScript's capabilities and limitations can help UI/UX Designers create more informed designs that are feasible and align with the technical implementation.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in JavaScript: Understanding the Weird Parts.
Comprehensive reference guide to JavaScript. It covers everything from the basics to advanced topics.
JavaScript: The Good Parts must-read for any JavaScript developer. It provides a comprehensive overview of the language and its best practices.
Must-read for any software developer. It provides a detailed look at the principles and practices of clean code.
This practical book takes you on a guided tour of JavaScript with a friendly and thorough introduction that covers the basics to advanced topics.
Collection of techniques and best practices for JavaScript developers. It's a great choice for those who want to take their JavaScript skills to the next level.
Classic in the software development community. It provides a timeless look at the challenges and complexities of software development.
Provides a detailed look at variables, scope, types, and data structures. It's a great choice for those who want to build a solid foundation in JavaScript.
Provides a collection of common JavaScript patterns and techniques. It's a great choice for those who want to learn how to write more efficient and maintainable JavaScript code.
Practical guide to React. It covers everything from the basics to advanced topics.
Practical guide to AngularJS. It covers everything from the basics to advanced topics.
Practical guide to jQuery. It covers everything from the basics to advanced topics.
Comprehensive guide to Node.js. It covers everything from the basics to advanced topics.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to JavaScript: Understanding the Weird Parts.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser