ES2015

Abbreviations
*[ECMA]: European Computer Manufacturers Association
*[IE]: Internet Explorer
*[TC39]: Technical Committee 39
Introduction
All programming languages go through updates to keep them modern and up to date with what an evolving world requires. The version of JavaScript used by most workplaces includes a set of updates released in 2015 called ECMAScript2015 or ES2015 for short. Since then, minor updates have been released every year, but the one you should be most concerned about learning for your professional development is ES2015. If you can talk confidently about this release during an interview, you will score major brownie points.
In this unit, we’ll dive deep into the major updates, popular features, and great functions of the ES2015 release. These changes let developers write less code to achieve the same functionality, enable people to navigate maps and sets in a more intuitive way, and introduce new data structures to store data better. The best of all, for a budding programmer like you, is that many methods and functions people used to have to implement by hand are built into this release. These functions have enabled JavaScript to be used as an Object-Oriented Programming language - and we’ll go over exactly why that’s awesome our unit on Object-Oriented Programming.
You will need to know how to use the features in ES2015 in any interview project or challenge a potential employer gives you. All future units will build on this information, and once you tap into the power of ES2015, you will be able to make some cool and imaginative projects. Speaking of which, the next unit, Connect Four, is one big project where you'll build an interactive game. This cumulative project will combine JavaScript fundamentals like DOM manipulation and advanced array methods with the information you learn here. You will also need to write more tests with Jasmine, because we know how great it feels to ace a test.
Goals
Familiarize yourself with the new features of ES2015
Get some context for why these features we re-added
Prepare yourself for reading, understanding, and writing code on modern codebase
Gain a more in-depth understanding of JavaScript
ES2015 Introduction
This subunit will give you some background on ES2015. It will explain the rationale behind the updates, an overview of the specific features in the release, and the relationship between ECMAScript and JavaScript. You won't be doing much programming in this subunit, but this is important to know to help you understand the broader picture of the technological world.
An Introduction
Let’s see some newer JS features!
Everything covered here is part of ES2015 (what is that??)
Some of these features aren’t supported in IE
Before we start.....A brief history
Browser wars of the 90s
JS Chaos, standardization necessary
Enter ECMA!
What is ECMAScript
The “standard” for the JS language!
Started during the browser wars between Microsoft and Netscape
Browsers/Node implement the language based on this standard
What is ECMA
standards organization for information and communication systems.
Who makes the decisions?
Introducing TC39
Technical Committee 39 maintains and updates the ECMAScript standard/
They are “in charge” of adding new features
They evaluate proposals for complementary or additional technologies.
Evolving JS - The old way
New features were batched together into large releases
These releases were named with version numbers (ES3, ES5, etc.)
Versions released infrequently, often with years between
Evolving JS - The new way
Updates to the standard are published yearly
Any new features ready each year are added together
Versions named by year (ES2016, ES2017, etc.)
Introduced a new, formalized proposal process
Stages of TC39
Stage 0: Strawman
It all starts with an idea!
Non-formal proposals live here
Any discussion, idea, change, or addition which has not yet been submitted as a formal proposal is considered to be a “strawman” proposal at this stage. Only members of TC39 can create these proposals, and there’s over a dozen active strawman proposals today.
Stage 1: Proposal
It’s an “official” proposal
Polyfills / plugins will usually be introduced at this time
Very unlikely that implementers are working on proposals
Stage 2: Draft
Still a bit too early for us to cover!
Sometimes implementers will experiment adding this to browsers/environments
Stage 3: Candidate
Proposals in this stage are candidate recommendations.
Unlikely to change beyond fixes to issues identified in the wild.
Proposals move to this level with at least one browser implementation or when supported by a build-time transpiler like Babel.
Stage 4: Finished
Proposals get to this stage when there are at least two independent implementations that pass acceptance tests.
Everything in this unit is Stage 4
And has been implemented by almost all modern browsers