SlideShare a Scribd company logo
ES2015 / ES6
Basics of modern JavaScript
Wojciech Dzikowski
@DzikowskiW
• working remotely for a software startup Folium
Partners since 2011
• we create software for ebook and audiobook
publishers
• Software engineer : JavaScript, PHP (Symfony 2),
Android, OS X / iOS
• contact: @DzikowskiW
Wojciech Dzikowski
Agenda
1. Evolution of JavaScript
2. Main goals of JavaScript and ES6
3. ES6 in practice (selected features)
4. Q&A
Dictionary
• JavaScript (JS) - a high-level, dynamic, untyped, and interpreted
programming language created originally for web browsers, ECMAScript
implementation
• ECMA International - an international non-profit standards organization
for information and communication systems.It acquired its current name in
1994, when the European Computer Manufacturers Association (ECMA)
changed its name to reflect the organization's global reach and activities
• ECMAScript (ES)- scripting-language specification standardized by
Ecma International in ECMA-262 and ISO/IEC 16262. Well-known
implementations of the language, such as JavaScript, JScript and
ActionScript have come into wide use for client-side scripting on the Web
• ES2015 (ES6) - the newest version of ECMAScript
Language Evolution
90s
• 1995: Netscape creates Mocha
• 1995: Mocha -> LiveScript -> JavaScript
• 1996: ECMA adopts JavaScript
• 1997: ECMA-262 (ES1)
• 1998: ES2
• 1999: ES3 (regex, try/catch)
90s
• browser wars IE vs Netscape
• DHTML, “animate everything”
• forms validation
• visitor counters
• code had to be optimised per browser (IE vs Netscape)
2000-2004
• browser wars - IE wins
• not much going on in JS world
2005: AJAX
• Broadband Internet becomes popular
• Asynchronus server requests (AJAX) becomes popular
• renaissance of JavaScript
• countless libraries (mainly helping with AJAX requests
and DOM operations)
2006-2009
• 2008: ECMAScript4 (abandoned)
• 2009: ECMAScript 3.1 5 (strict, JSON, Reflect)
• 2009: servers welcome JavaScript: Node.js
2010-2015
• frameworks evolution, no longer just DOM & AJAX
helpers
• JS packet managers: npm, bower
• solutions for keeping code in modules (node.js,
CommonJS, AMD, Browserify)
• JavaScript preprocessors (Grunt, Gulp, Webpack,…)
Now
• 2015: ECMAScript 2015 (lots of features)
• since 2015 a new ES spec will be released each
year
• upcoming: ES2016 (no major changes)
2016
Web browser
Desktop Apps
Server
Mobile Apps
JavaScript - pros
• easy syntax
• functions are objects (awesome!)
• independent from any big company
• the only native web browser language
• big and vibrant community
• lots of helpful tools, libraries and frameworks
JavaScript
JavaScript ≠ Java
Guinea pig ≠ pig
≠
≠
JavaScript - cons
(subjective list)
• differences in comparison to Java-like
languages can create confusion (prototypes vs
classes,function scope vs block scope, hoisting, +,
…)
JavaScript - cons
(subjective list)
• not many unequivocal clean code practices (each
framework = new practices, enforcing bad
practices can be harmful to community)
• very rapid development often makes tools and
frameworks obsolete fast, it is hard to choose
frameworks and tools for apps that need to be
maintained for years
Main goals of ES6
• fix (some of) ES5 problems
• backwards compatibility (ES5 code is valid in
ES6)
• modern syntax
• better suited for big applications
• new features in standard library
ES6 -today
kangax.github.io/compat-table
ES6 in browsers today
• ES6 => ES5 transpilers
Babel - usage
• command line:
$ babel es6.js -o es5.js
• Online:
• Konfigurator: http://babeljs.io/docs/setup/
Babel - użycie
• Online wizard: http://babeljs.io/docs/setup/
ES6 in practice
ES5: var
ES5: var - hoisting
ES6: let is new var
ES5…
…ES6: const
ES5: concatenation
ES5: long strings
ES6: Template strings
ES6: Object declarations
ES6: Classes
ES6: Classes
ES6: Setters & getters
ES6: Default params
ES5 recap: map
el
ES5 recap: filter
ES5 recap: reduce
ES6: Arrow functions
ES6: Arrow functions
Arrow functions: this
ES5: for … in
• best practice: avoid that loop
ES6: for … of
• for … of can iterate not only over arrays
• Homework: Iterators in ES6
Asynchronus programming
• common in JS (animations, server requests, etc.)
• Classic solution: callback
• Problem: only one callback per async task
Async programming, ES5
• Problem: Nested functions create messy code
Async programming, ES5
• Second try: Listeners
• Problem: no reaction when async function ends before
listener registers, often hard to debug
ES6: Promise
• object that keeps a result of an async function (waiting,
resolved, rejected)
• fixes earlier problem with listeners, since callback is called even
if async function completed the task earlier
• allows to return (Promise) objects and work with them, even if
async function is still not completed (better code readability)
• “promises” that it will get resolved
• uses Observer pattern to populate the result
• flattens nested promises to avoid “callback hell”
Promises
Promise
• waiting
• resolved
• rejected
States:
async function
Listener 1
Listener 2
Listener 3
Promises
Callback hell, ES5
Promises
Modules (ES5)
• IIFE (Immediately Invoked Function Expression)
• controls variable exposure
Modules (ES6) in browser
• use tools such as Browserify / Webpack,
• native ES6 modules are not yet implemented
What we have learned?
• let/const
• template strings
• new ways to declare objects
• classes
• map, filter, reduce (ES5)
• arrow functions
• for … of
• Promises
• Modules
Other ES6 features
• Proxy
• Iterators
• Generators
• Symbols
• Map/Set, WeakMap/WeakSet
• extended standard library (Number, Math, Array)
Summary
• use transpilers (Babel) to write ES6 today for any
browser
• learn ES6 step by step, you don’t have to know
everything at once
• many features are syntactic sugar, use with
moderation
• ES6 is now, go learn it!
What next?
• Babel docs: https://babeljs.io/docs/learn-es2015/
• Mozilla docs: http://developer.mozilla.org/en-US/
docs/Web/JavaScript
• ES specs: https://github.com/tc39/ecma262
• Pluralsight: JavaScript Fundamentals for ES6
• Youtube: FunFunFunction
Q&A

More Related Content

What's hot

WebAssembly Overview
WebAssembly OverviewWebAssembly Overview
WebAssembly Overview
Alexandr Skachkov
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
Samundra khatri
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
Jennifer Estrada
 
3. Java Script
3. Java Script3. Java Script
3. Java Script
Jalpesh Vasa
 
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
monikadeshmane
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?
Simplilearn
 
Basics of React Hooks.pptx.pdf
Basics of React Hooks.pptx.pdfBasics of React Hooks.pptx.pdf
Basics of React Hooks.pptx.pdf
Knoldus Inc.
 
Intro to Asynchronous Javascript
Intro to Asynchronous JavascriptIntro to Asynchronous Javascript
Intro to Asynchronous Javascript
Garrett Welson
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript Programming
Haim Michael
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
Amit Tyagi
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
L&T Technology Services Limited
 
How to implement internationalization (i18n) in angular application(multiple ...
How to implement internationalization (i18n) in angular application(multiple ...How to implement internationalization (i18n) in angular application(multiple ...
How to implement internationalization (i18n) in angular application(multiple ...
Katy Slemon
 
ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
Domenic Denicola
 
Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPM
Bhargav Anadkat
 
ECMA Script
ECMA ScriptECMA Script
ECMA Script
NodeXperts
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
Manvendra Singh
 
Angular
AngularAngular
Angular
Lilia Sfaxi
 
Express js
Express jsExpress js
Express js
Manav Prasad
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
Chiamaka Nwolisa
 

What's hot (20)

WebAssembly Overview
WebAssembly OverviewWebAssembly Overview
WebAssembly Overview
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
3. Java Script
3. Java Script3. Java Script
3. Java Script
 
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?
 
Basics of React Hooks.pptx.pdf
Basics of React Hooks.pptx.pdfBasics of React Hooks.pptx.pdf
Basics of React Hooks.pptx.pdf
 
Intro to Asynchronous Javascript
Intro to Asynchronous JavascriptIntro to Asynchronous Javascript
Intro to Asynchronous Javascript
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript Programming
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
How to implement internationalization (i18n) in angular application(multiple ...
How to implement internationalization (i18n) in angular application(multiple ...How to implement internationalization (i18n) in angular application(multiple ...
How to implement internationalization (i18n) in angular application(multiple ...
 
ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
 
Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPM
 
ECMA Script
ECMA ScriptECMA Script
ECMA Script
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Angular
AngularAngular
Angular
 
Express js
Express jsExpress js
Express js
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
 

Similar to ES2015 / ES6: Basics of modern Javascript

Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical Skills
Sandeep Adwankar
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
IT Arena
 
MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEVishal Mittal
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
Jesse Warden
 
Structured web apps
Structured web appsStructured web apps
Structured web appsSheng Tian
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
Eberhard Wolff
 
Case study
Case studyCase study
Case study
karan saini
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
Philippe Riand
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
Kasey McCurdy
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
IncQuery Labs
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
PROIDEA
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
sunmitraeducation
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcutUpgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
Christian Heilmann
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
Jesse Gallagher
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
Christian Heilmann
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
UzairSaeed18
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
Infoviaan Technologies
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
Jeff Fox
 

Similar to ES2015 / ES6: Basics of modern Javascript (20)

Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical Skills
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITE
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Structured web apps
Structured web appsStructured web apps
Structured web apps
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
 
Java (1)
Java (1)Java (1)
Java (1)
 
Case study
Case studyCase study
Case study
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcutUpgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 

Recently uploaded

Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 

Recently uploaded (20)

Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 

ES2015 / ES6: Basics of modern Javascript

  • 1. ES2015 / ES6 Basics of modern JavaScript Wojciech Dzikowski @DzikowskiW
  • 2. • working remotely for a software startup Folium Partners since 2011 • we create software for ebook and audiobook publishers • Software engineer : JavaScript, PHP (Symfony 2), Android, OS X / iOS • contact: @DzikowskiW Wojciech Dzikowski
  • 3. Agenda 1. Evolution of JavaScript 2. Main goals of JavaScript and ES6 3. ES6 in practice (selected features) 4. Q&A
  • 4. Dictionary • JavaScript (JS) - a high-level, dynamic, untyped, and interpreted programming language created originally for web browsers, ECMAScript implementation • ECMA International - an international non-profit standards organization for information and communication systems.It acquired its current name in 1994, when the European Computer Manufacturers Association (ECMA) changed its name to reflect the organization's global reach and activities • ECMAScript (ES)- scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. Well-known implementations of the language, such as JavaScript, JScript and ActionScript have come into wide use for client-side scripting on the Web • ES2015 (ES6) - the newest version of ECMAScript
  • 6. 90s • 1995: Netscape creates Mocha • 1995: Mocha -> LiveScript -> JavaScript • 1996: ECMA adopts JavaScript • 1997: ECMA-262 (ES1) • 1998: ES2 • 1999: ES3 (regex, try/catch)
  • 7. 90s • browser wars IE vs Netscape • DHTML, “animate everything” • forms validation • visitor counters • code had to be optimised per browser (IE vs Netscape)
  • 8. 2000-2004 • browser wars - IE wins • not much going on in JS world
  • 9. 2005: AJAX • Broadband Internet becomes popular • Asynchronus server requests (AJAX) becomes popular • renaissance of JavaScript • countless libraries (mainly helping with AJAX requests and DOM operations)
  • 10. 2006-2009 • 2008: ECMAScript4 (abandoned) • 2009: ECMAScript 3.1 5 (strict, JSON, Reflect) • 2009: servers welcome JavaScript: Node.js
  • 11. 2010-2015 • frameworks evolution, no longer just DOM & AJAX helpers • JS packet managers: npm, bower • solutions for keeping code in modules (node.js, CommonJS, AMD, Browserify) • JavaScript preprocessors (Grunt, Gulp, Webpack,…)
  • 12. Now • 2015: ECMAScript 2015 (lots of features) • since 2015 a new ES spec will be released each year • upcoming: ES2016 (no major changes)
  • 14. JavaScript - pros • easy syntax • functions are objects (awesome!) • independent from any big company • the only native web browser language • big and vibrant community • lots of helpful tools, libraries and frameworks
  • 16. JavaScript ≠ Java Guinea pig ≠ pig ≠ ≠
  • 17. JavaScript - cons (subjective list) • differences in comparison to Java-like languages can create confusion (prototypes vs classes,function scope vs block scope, hoisting, +, …)
  • 18. JavaScript - cons (subjective list) • not many unequivocal clean code practices (each framework = new practices, enforcing bad practices can be harmful to community) • very rapid development often makes tools and frameworks obsolete fast, it is hard to choose frameworks and tools for apps that need to be maintained for years
  • 19. Main goals of ES6 • fix (some of) ES5 problems • backwards compatibility (ES5 code is valid in ES6) • modern syntax • better suited for big applications • new features in standard library
  • 21. ES6 in browsers today • ES6 => ES5 transpilers
  • 22. Babel - usage • command line: $ babel es6.js -o es5.js • Online: • Konfigurator: http://babeljs.io/docs/setup/
  • 23. Babel - użycie • Online wizard: http://babeljs.io/docs/setup/
  • 26. ES5: var - hoisting
  • 27. ES6: let is new var
  • 36. ES6: Setters & getters
  • 44. ES5: for … in • best practice: avoid that loop
  • 45. ES6: for … of • for … of can iterate not only over arrays • Homework: Iterators in ES6
  • 46. Asynchronus programming • common in JS (animations, server requests, etc.) • Classic solution: callback • Problem: only one callback per async task
  • 47. Async programming, ES5 • Problem: Nested functions create messy code
  • 48. Async programming, ES5 • Second try: Listeners • Problem: no reaction when async function ends before listener registers, often hard to debug
  • 49. ES6: Promise • object that keeps a result of an async function (waiting, resolved, rejected) • fixes earlier problem with listeners, since callback is called even if async function completed the task earlier • allows to return (Promise) objects and work with them, even if async function is still not completed (better code readability) • “promises” that it will get resolved • uses Observer pattern to populate the result • flattens nested promises to avoid “callback hell”
  • 50. Promises Promise • waiting • resolved • rejected States: async function Listener 1 Listener 2 Listener 3
  • 54. Modules (ES5) • IIFE (Immediately Invoked Function Expression) • controls variable exposure
  • 55. Modules (ES6) in browser • use tools such as Browserify / Webpack, • native ES6 modules are not yet implemented
  • 56. What we have learned? • let/const • template strings • new ways to declare objects • classes • map, filter, reduce (ES5) • arrow functions • for … of • Promises • Modules
  • 57. Other ES6 features • Proxy • Iterators • Generators • Symbols • Map/Set, WeakMap/WeakSet • extended standard library (Number, Math, Array)
  • 58. Summary • use transpilers (Babel) to write ES6 today for any browser • learn ES6 step by step, you don’t have to know everything at once • many features are syntactic sugar, use with moderation • ES6 is now, go learn it!
  • 59. What next? • Babel docs: https://babeljs.io/docs/learn-es2015/ • Mozilla docs: http://developer.mozilla.org/en-US/ docs/Web/JavaScript • ES specs: https://github.com/tc39/ecma262 • Pluralsight: JavaScript Fundamentals for ES6 • Youtube: FunFunFunction
  • 60. Q&A