SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
NewES6 Hotness
Pawel Szymczykowski / @makenai 1
ES6 = ECMAScript6
ECMAScript 6 is the 6th edition of ECMA-262, the
standard defining the behaviors of the JavaScript
language.
JavaScript is an implementation of ECMAScript, as are
JScript and ActionScript.
Pawel Szymczykowski / @makenai 2
“ECMAScriptwas
alwaysan
unwantedtrade
namethatsounds
likeaskin disease.”
Brendan Eich
Pawel Szymczykowski / @makenai 3
ECMA= European Computer
ManufacturersAssociation1
They are a standards organization, like ISO.
1
(but that doesn't matter)
Pawel Szymczykowski / @makenai 4
ECMAScriptEditions
» 1 - June 1997
» 2 - June 1998
» 3 - December 1999
» 4 - Oops...
» 5 - December 2009
» 6 - Mid-2015
» 7 - TBA
Pawel Szymczykowski / @makenai 5
Exciting newfeatures
Pawel Szymczykowski / @makenai 6
FatArrows
var cat = name => console.log("my cat is named " + name);
cat('spot');
same as
var cat = function (name) {
return console.log("my cat is named " + name);
};
cat("spot");
Pawel Szymczykowski / @makenai 7
More On FatArrows
var numbers = [ 5, 4, 3, 2, 1];
var song = numbers.map( n => n + " bottles of beer on the wall" );
console.log( song );
/*
[ '5 bottles of beer on the wall',
'4 bottles of beer on the wall',
'3 bottles of beer on the wall',
'2 bottles of beer on the wall',
'1 bottles of beer on the wall' ]
*/
Pawel Szymczykowski / @makenai 8
Classes
class FarmAnimal {
constructor() {
this.legs = 4
}
}
class Cow extends FarmAnimal {
speak() {
console.log("moo. I have " + this.legs + " legs.")
}
}
var c = new Cow();
c.speak(); // moo. I have 4 legs.
Pawel Szymczykowski / @makenai 9
Fancy String Interpolation
var legs = 7; // mutant cow
console.log(`I have ${legs} legs.`); // I have 7 legs
Note the back-ticks (`) which are not the same as (')
or (").
Pawel Szymczykowski / @makenai 10
Enhanced Objects {}
var a = 'apple';
var b = 'banana';
var fruit = { a, b, c: 'cherry' };
console.log( fruit ); // { a: 'apple', b: 'banana', c: 'cherry' }
Pawel Szymczykowski / @makenai 11
DefaultParams
function speak(phrase="Um") {
console.log(phrase);
}
is nicer than the es5 equivalent
function speak(phrase) {
phrase = phrase || "Um";
console.log(phrase);
}
speak(); // Um
Pawel Szymczykowski / @makenai 12
Destructuring
var a = "a";
var b = "b";
[a,b] = [b,a];
console.log(a); // b
Pawel Szymczykowski / @makenai 13
Spread Operator + for..ofloops
function makeWords(word, ...suffixes) {
for (var suffix of suffixes) {
console.log( word + suffix );
}
}
makeWords('bake', 'ry', 'r', 'd');
/*
bakery
baker
baked
*/
Pawel Szymczykowski / @makenai 14
letandvariable scope
flagpole scope
{
var cat = 'meow';
}
console.log(cat); // meow
block scope
{
let dog = 'woof';
}
console.log(dog); // ReferenceError: dog is not defined
Pawel Szymczykowski / @makenai 15
Modules
lib/egyptianMath.js
export var pi = 22/7;
export function cubitsToFeet(cb) {
return cb * 1.5;
}
someFile.js
import {pi} from 'lib/egyptianMath'
console.log(pi);
otherFile.js
import * as eMath from 'lib/egyptianMath'
console.log(eMath.pi);
Pawel Szymczykowski / @makenai 16
Sets
var s = new Set();
s.add("OMG")
s.add("!")
s.add("ZOMG")
s.add("!")
s.add("!")
s.add("!")
console.log(s.size); // 3
Pawel Szymczykowski / @makenai 17
WeakMap/WeakSet
var map = new WeakMap();
var dom = {
someNode: { 'cats': 'happy' }
};
map.set(dom.someNode, "Meow");
var value = map.get(dom.someNode);
console.log(value); // "Meow"
dom['someNode'] = { 'cats': 'sad' };
// Having no strong references, { 'cats': 'happy' }
// can now be garbage collected.
Pawel Szymczykowski / @makenai 18
Proxies 2
var pets = [ 'cat', 'dog', 'fish', 'elephant' ];
console.log( pets[-1] ); // undefined
var superPets = new Proxy(pets, {
get: function(object, index) {
if (Number(index) < 0) {
return object[ object.length + Number(index) ];
} else {
return object[ index ];
}
}
});
console.log( superPets[-1] ); // "elephant"
2
Not supported by transpilers
Pawel Szymczykowski / @makenai 19
Generators
function *fibonacci() {
var a=1, b=1;
while (true) {
[a,b] = [b,a+b];
yield b;
}
}
var fib = fibonacci();
console.log( fib.next() ); // { value: 2, done: false }
console.log( fib.next() ); // { value: 3, done: false }
console.log( fib.next() ); // { value: 5, done: false }
console.log( fib.next() ); // { value: 8, done: false }
console.log( fib.next() ); // { value: 13, done: false }
Pawel Szymczykowski / @makenai 20
Promises
var promise = new Promise(function(resolve,reject) {
setTimeout(function() {
if ( Math.random() > 0.5 ) {
resolve('alive');
} else {
reject('dead');
}
}, 500);
});
promise.then(
function(value) {
console.log('Yay, the cat is ' + value);
},
function(error) {
console.log('Sorry, the cat is ' + error);
}
);
Pawel Szymczykowski / @makenai 21
How do I usethis stuff?
Pawel Szymczykowski / @makenai 22
http://kangax.github.io/compat-table/es6/
Pawel Szymczykowski / @makenai 23
IETechnicalPreview
70% supported3
3
Have to enable experimental web features.
Pawel Szymczykowski / @makenai 24
FireFox 37
65% supported
Pawel Szymczykowski / @makenai 25
io.js42% supported4
4
With --es_staging flag
Pawel Szymczykowski / @makenai 26
Babel77% SupportPawel Szymczykowski / @makenai 27
Babel
Compiles ES6 code into ES3 code that your JS engine
can run today.
$ cat interpolation.js
var legs = 7;
console.log(`I have ${legs} legs.`);
$ babel interpolation.js
"use strict";
var legs = 7;
console.log("I have " + legs + " legs.");
Pawel Szymczykowski / @makenai 28
Using Babel
npm install --g babel
enables
babel someFile.js # Outputs the generated ES3 code
babel-node someFile.js # Just like the node REPL
Pawel Szymczykowski / @makenai 29
Grunt
require("load-grunt-tasks")(grunt); // npm install --save-dev load-grunt-tasks
grunt.initConfig({
"babel": {
options: {
sourceMap: true
},
dist: {
files: {
"dist/app.js": "src/app.js"
}
}
}
});
Pawel Szymczykowski / @makenai 30
Babelasalibrary
main.js
require('babel/register');
var myApp = require('app');
// No ES6 code allowed in this file yet
myApp.run();
app.js
// ES6 code OK in this file and any else that it includes
module.exports = {
run: function() {
var numbers = [ 5, 4, 3, 2, 1];
var song = numbers.map( n => n + " bottles of beer on the wall" );
console.log( song );
}
}
Pawel Szymczykowski / @makenai 31
Inthe browser
Probably not a great idea, but you could you know...
<script src="node_modules/babel/browser.js"></script>
<script type="text/babel">
class Test {
test() {
return "test";
}
}
var test = new Test;
test.test(); // "test"
</script>
Pawel Szymczykowski / @makenai 32
...andabunch ofother places.
» rails
» broccoli
» browserify
» brunch
» duo
» gobble
» gulp
Pawel Szymczykowski / @makenai 33
Resources
ECMAScript 6 compatibility table
http://kangax.github.io/compat-table/es6/
ECMAScript 2015 Language Specification
https://people.mozilla.org/~jorendorff/es6-draft.html
Overview of ECMAScript 6 features
https://github.com/lukehoban/es6features
Pawel Szymczykowski / @makenai 34
Questions?
Pawel Szymczykowski / @makenai 35

Weitere ähnliche Inhalte

Was ist angesagt?

Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUGBen Scofield
 
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017Ryan Weaver
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
 
How to develop modern web application framework
How to develop modern web application frameworkHow to develop modern web application framework
How to develop modern web application frameworktechmemo
 
MySQL in Go - Golang NE July 2015
MySQL in Go - Golang NE July 2015MySQL in Go - Golang NE July 2015
MySQL in Go - Golang NE July 2015Mark Hemmings
 
優しいWAFの作り方
優しいWAFの作り方優しいWAFの作り方
優しいWAFの作り方techmemo
 
Hacking ansible
Hacking ansibleHacking ansible
Hacking ansiblebcoca
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty HammerBen Scofield
 
JavaScript Sprachraum
JavaScript SprachraumJavaScript Sprachraum
JavaScript Sprachraumpatricklee
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkJeremy Kendall
 
Asynchronous programming patterns in Perl
Asynchronous programming patterns in PerlAsynchronous programming patterns in Perl
Asynchronous programming patterns in Perldeepfountainconsulting
 
An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015Andy Beverley
 
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...Amazon Web Services
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsMichael Peacock
 

Was ist angesagt? (20)

Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUG
 
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
 
Play á la Rails
Play á la RailsPlay á la Rails
Play á la Rails
 
Mojo as a_client
Mojo as a_clientMojo as a_client
Mojo as a_client
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
 
How to develop modern web application framework
How to develop modern web application frameworkHow to develop modern web application framework
How to develop modern web application framework
 
MySQL in Go - Golang NE July 2015
MySQL in Go - Golang NE July 2015MySQL in Go - Golang NE July 2015
MySQL in Go - Golang NE July 2015
 
Developing apps using Perl
Developing apps using PerlDeveloping apps using Perl
Developing apps using Perl
 
優しいWAFの作り方
優しいWAFの作り方優しいWAFの作り方
優しいWAFの作り方
 
Hacking ansible
Hacking ansibleHacking ansible
Hacking ansible
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty Hammer
 
JavaScript Sprachraum
JavaScript SprachraumJavaScript Sprachraum
JavaScript Sprachraum
 
Lies, Damn Lies, and Benchmarks
Lies, Damn Lies, and BenchmarksLies, Damn Lies, and Benchmarks
Lies, Damn Lies, and Benchmarks
 
Cyansible
CyansibleCyansible
Cyansible
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
 
Asynchronous programming patterns in Perl
Asynchronous programming patterns in PerlAsynchronous programming patterns in Perl
Asynchronous programming patterns in Perl
 
An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015An introduction to Rex - FLOSS UK DevOps York 2015
An introduction to Rex - FLOSS UK DevOps York 2015
 
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...
(APP202) Deploy, Manage, and Scale Your Apps with AWS OpsWorks and AWS Elasti...
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
 
Phinx talk
Phinx talkPhinx talk
Phinx talk
 

Andere mochten auch

Javascript foundations: Inheritance
Javascript foundations: InheritanceJavascript foundations: Inheritance
Javascript foundations: InheritanceJohn Hunter
 
2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritancepedro.carvalho
 
Basic inheritance in JavaScript
Basic inheritance in JavaScriptBasic inheritance in JavaScript
Basic inheritance in JavaScriptBrian Moschel
 
JavaScript: The prototype Property
JavaScript: The prototype PropertyJavaScript: The prototype Property
JavaScript: The prototype PropertyGuillermo Paz
 
libGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferenceslibGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferencesJussi Pohjolainen
 
JavaScript Prototype and Module Pattern
JavaScript Prototype and Module PatternJavaScript Prototype and Module Pattern
JavaScript Prototype and Module PatternNarendra Sisodiya
 
Prototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptPrototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptSunny Sharma
 

Andere mochten auch (10)

Javascript foundations: Inheritance
Javascript foundations: InheritanceJavascript foundations: Inheritance
Javascript foundations: Inheritance
 
JavaScript Inheritence
JavaScript  InheritenceJavaScript  Inheritence
JavaScript Inheritence
 
2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance
 
JavaScript Inheritance
JavaScript InheritanceJavaScript Inheritance
JavaScript Inheritance
 
Basic inheritance in JavaScript
Basic inheritance in JavaScriptBasic inheritance in JavaScript
Basic inheritance in JavaScript
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
JavaScript: The prototype Property
JavaScript: The prototype PropertyJavaScript: The prototype Property
JavaScript: The prototype Property
 
libGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and PreferenceslibGDX: Screens, Fonts and Preferences
libGDX: Screens, Fonts and Preferences
 
JavaScript Prototype and Module Pattern
JavaScript Prototype and Module PatternJavaScript Prototype and Module Pattern
JavaScript Prototype and Module Pattern
 
Prototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptPrototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScript
 

Ähnlich wie ES6 Hotness: New Features in ECMAScript 6

ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)
ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)
ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)Tomomi Imura
 
Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Lukas Ruebbelke
 
JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6Solution4Future
 
Puppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worldsPuppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worldsPuppet
 
Ansible inside
Ansible insideAnsible inside
Ansible insideIdeato
 
ES6 Simplified
ES6 SimplifiedES6 Simplified
ES6 SimplifiedCarlos Ble
 
Adding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxAdding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxJeff Strauss
 
A few good JavaScript development tools
A few good JavaScript development toolsA few good JavaScript development tools
A few good JavaScript development toolsSimon Kim
 
Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2Brian Schott
 
ESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowKrzysztof Szafranek
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Ryan Weaver
 
Idiomatic Javascript (ES5 to ES2015+)
Idiomatic Javascript (ES5 to ES2015+)Idiomatic Javascript (ES5 to ES2015+)
Idiomatic Javascript (ES5 to ES2015+)David Atchley
 

Ähnlich wie ES6 Hotness: New Features in ECMAScript 6 (20)

ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)
ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)
ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)
 
Ecmascript 6
Ecmascript 6Ecmascript 6
Ecmascript 6
 
Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015Impress Your Friends with EcmaScript 2015
Impress Your Friends with EcmaScript 2015
 
JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6
 
Puppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worldsPuppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worlds
 
React on es6+
React on es6+React on es6+
React on es6+
 
Ansible inside
Ansible insideAnsible inside
Ansible inside
 
Es6 to es5
Es6 to es5Es6 to es5
Es6 to es5
 
ES6 Simplified
ES6 SimplifiedES6 Simplified
ES6 Simplified
 
Adding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxAdding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer Toolbox
 
A few good JavaScript development tools
A few good JavaScript development toolsA few good JavaScript development tools
A few good JavaScript development tools
 
Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2
 
Fewd week5 slides
Fewd week5 slidesFewd week5 slides
Fewd week5 slides
 
ES6: Features + Rails
ES6: Features + RailsES6: Features + Rails
ES6: Features + Rails
 
ESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. NowESCMAScript 6: Get Ready For The Future. Now
ESCMAScript 6: Get Ready For The Future. Now
 
ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
 
I motion
I motionI motion
I motion
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
 
Idiomatic Javascript (ES5 to ES2015+)
Idiomatic Javascript (ES5 to ES2015+)Idiomatic Javascript (ES5 to ES2015+)
Idiomatic Javascript (ES5 to ES2015+)
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
 

Mehr von Pawel Szymczykowski

Mehr von Pawel Szymczykowski (7)

Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
Las Vegas Mini Maker Faire Community Meeting 2.0
Las Vegas Mini Maker Faire Community Meeting 2.0Las Vegas Mini Maker Faire Community Meeting 2.0
Las Vegas Mini Maker Faire Community Meeting 2.0
 
Las Vegas Mini Maker Faire Community Meeting
Las Vegas Mini Maker Faire Community MeetingLas Vegas Mini Maker Faire Community Meeting
Las Vegas Mini Maker Faire Community Meeting
 
How was usrlib formed?
How was usrlib formed?How was usrlib formed?
How was usrlib formed?
 
Hackers inspace
Hackers inspaceHackers inspace
Hackers inspace
 
Instant ramen pawel szymczykowski
Instant ramen   pawel szymczykowskiInstant ramen   pawel szymczykowski
Instant ramen pawel szymczykowski
 
/usr/lib allhands
/usr/lib allhands/usr/lib allhands
/usr/lib allhands
 

Kürzlich hochgeladen

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 

Kürzlich hochgeladen (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 

ES6 Hotness: New Features in ECMAScript 6

  • 2. ES6 = ECMAScript6 ECMAScript 6 is the 6th edition of ECMA-262, the standard defining the behaviors of the JavaScript language. JavaScript is an implementation of ECMAScript, as are JScript and ActionScript. Pawel Szymczykowski / @makenai 2
  • 4. ECMA= European Computer ManufacturersAssociation1 They are a standards organization, like ISO. 1 (but that doesn't matter) Pawel Szymczykowski / @makenai 4
  • 5. ECMAScriptEditions » 1 - June 1997 » 2 - June 1998 » 3 - December 1999 » 4 - Oops... » 5 - December 2009 » 6 - Mid-2015 » 7 - TBA Pawel Szymczykowski / @makenai 5
  • 7. FatArrows var cat = name => console.log("my cat is named " + name); cat('spot'); same as var cat = function (name) { return console.log("my cat is named " + name); }; cat("spot"); Pawel Szymczykowski / @makenai 7
  • 8. More On FatArrows var numbers = [ 5, 4, 3, 2, 1]; var song = numbers.map( n => n + " bottles of beer on the wall" ); console.log( song ); /* [ '5 bottles of beer on the wall', '4 bottles of beer on the wall', '3 bottles of beer on the wall', '2 bottles of beer on the wall', '1 bottles of beer on the wall' ] */ Pawel Szymczykowski / @makenai 8
  • 9. Classes class FarmAnimal { constructor() { this.legs = 4 } } class Cow extends FarmAnimal { speak() { console.log("moo. I have " + this.legs + " legs.") } } var c = new Cow(); c.speak(); // moo. I have 4 legs. Pawel Szymczykowski / @makenai 9
  • 10. Fancy String Interpolation var legs = 7; // mutant cow console.log(`I have ${legs} legs.`); // I have 7 legs Note the back-ticks (`) which are not the same as (') or ("). Pawel Szymczykowski / @makenai 10
  • 11. Enhanced Objects {} var a = 'apple'; var b = 'banana'; var fruit = { a, b, c: 'cherry' }; console.log( fruit ); // { a: 'apple', b: 'banana', c: 'cherry' } Pawel Szymczykowski / @makenai 11
  • 12. DefaultParams function speak(phrase="Um") { console.log(phrase); } is nicer than the es5 equivalent function speak(phrase) { phrase = phrase || "Um"; console.log(phrase); } speak(); // Um Pawel Szymczykowski / @makenai 12
  • 13. Destructuring var a = "a"; var b = "b"; [a,b] = [b,a]; console.log(a); // b Pawel Szymczykowski / @makenai 13
  • 14. Spread Operator + for..ofloops function makeWords(word, ...suffixes) { for (var suffix of suffixes) { console.log( word + suffix ); } } makeWords('bake', 'ry', 'r', 'd'); /* bakery baker baked */ Pawel Szymczykowski / @makenai 14
  • 15. letandvariable scope flagpole scope { var cat = 'meow'; } console.log(cat); // meow block scope { let dog = 'woof'; } console.log(dog); // ReferenceError: dog is not defined Pawel Szymczykowski / @makenai 15
  • 16. Modules lib/egyptianMath.js export var pi = 22/7; export function cubitsToFeet(cb) { return cb * 1.5; } someFile.js import {pi} from 'lib/egyptianMath' console.log(pi); otherFile.js import * as eMath from 'lib/egyptianMath' console.log(eMath.pi); Pawel Szymczykowski / @makenai 16
  • 17. Sets var s = new Set(); s.add("OMG") s.add("!") s.add("ZOMG") s.add("!") s.add("!") s.add("!") console.log(s.size); // 3 Pawel Szymczykowski / @makenai 17
  • 18. WeakMap/WeakSet var map = new WeakMap(); var dom = { someNode: { 'cats': 'happy' } }; map.set(dom.someNode, "Meow"); var value = map.get(dom.someNode); console.log(value); // "Meow" dom['someNode'] = { 'cats': 'sad' }; // Having no strong references, { 'cats': 'happy' } // can now be garbage collected. Pawel Szymczykowski / @makenai 18
  • 19. Proxies 2 var pets = [ 'cat', 'dog', 'fish', 'elephant' ]; console.log( pets[-1] ); // undefined var superPets = new Proxy(pets, { get: function(object, index) { if (Number(index) < 0) { return object[ object.length + Number(index) ]; } else { return object[ index ]; } } }); console.log( superPets[-1] ); // "elephant" 2 Not supported by transpilers Pawel Szymczykowski / @makenai 19
  • 20. Generators function *fibonacci() { var a=1, b=1; while (true) { [a,b] = [b,a+b]; yield b; } } var fib = fibonacci(); console.log( fib.next() ); // { value: 2, done: false } console.log( fib.next() ); // { value: 3, done: false } console.log( fib.next() ); // { value: 5, done: false } console.log( fib.next() ); // { value: 8, done: false } console.log( fib.next() ); // { value: 13, done: false } Pawel Szymczykowski / @makenai 20
  • 21. Promises var promise = new Promise(function(resolve,reject) { setTimeout(function() { if ( Math.random() > 0.5 ) { resolve('alive'); } else { reject('dead'); } }, 500); }); promise.then( function(value) { console.log('Yay, the cat is ' + value); }, function(error) { console.log('Sorry, the cat is ' + error); } ); Pawel Szymczykowski / @makenai 21
  • 22. How do I usethis stuff? Pawel Szymczykowski / @makenai 22
  • 24. IETechnicalPreview 70% supported3 3 Have to enable experimental web features. Pawel Szymczykowski / @makenai 24
  • 25. FireFox 37 65% supported Pawel Szymczykowski / @makenai 25
  • 26. io.js42% supported4 4 With --es_staging flag Pawel Szymczykowski / @makenai 26
  • 28. Babel Compiles ES6 code into ES3 code that your JS engine can run today. $ cat interpolation.js var legs = 7; console.log(`I have ${legs} legs.`); $ babel interpolation.js "use strict"; var legs = 7; console.log("I have " + legs + " legs."); Pawel Szymczykowski / @makenai 28
  • 29. Using Babel npm install --g babel enables babel someFile.js # Outputs the generated ES3 code babel-node someFile.js # Just like the node REPL Pawel Szymczykowski / @makenai 29
  • 30. Grunt require("load-grunt-tasks")(grunt); // npm install --save-dev load-grunt-tasks grunt.initConfig({ "babel": { options: { sourceMap: true }, dist: { files: { "dist/app.js": "src/app.js" } } } }); Pawel Szymczykowski / @makenai 30
  • 31. Babelasalibrary main.js require('babel/register'); var myApp = require('app'); // No ES6 code allowed in this file yet myApp.run(); app.js // ES6 code OK in this file and any else that it includes module.exports = { run: function() { var numbers = [ 5, 4, 3, 2, 1]; var song = numbers.map( n => n + " bottles of beer on the wall" ); console.log( song ); } } Pawel Szymczykowski / @makenai 31
  • 32. Inthe browser Probably not a great idea, but you could you know... <script src="node_modules/babel/browser.js"></script> <script type="text/babel"> class Test { test() { return "test"; } } var test = new Test; test.test(); // "test" </script> Pawel Szymczykowski / @makenai 32
  • 33. ...andabunch ofother places. » rails » broccoli » browserify » brunch » duo » gobble » gulp Pawel Szymczykowski / @makenai 33
  • 34. Resources ECMAScript 6 compatibility table http://kangax.github.io/compat-table/es6/ ECMAScript 2015 Language Specification https://people.mozilla.org/~jorendorff/es6-draft.html Overview of ECMAScript 6 features https://github.com/lukehoban/es6features Pawel Szymczykowski / @makenai 34