Edition | Release Date | Browser Support | a.k.a. |
---|---|---|---|
3 | Dec. 1999 | All | ES3 |
5 | Dec. 2009 | IE 9, FF 4, Chrome 7 | ES5 |
6 | June 2015 | Not supported yet | ES2015 |
// var: function scoping, variables are hoisted
var array = [];
console.log(i); // prints undefined
for (var i = 0; i < 10; i++) {
array.push(Math.random());
}
console.log(i); // prints 10
// let: block scoping, no hoisting
let array = [];
console.log(i); // ReferenceError
for (let i = 0; i < 10; i++) {
array.push(Math.random());
}
console.log(i); // ReferenceError
var pageNumber = "( " + getCount() + " / " + pageTotal + " )";
let pageNumber = `( ${getCount()} / ${pageTotal} )`;
var poem = [
"JavaScript = fun",
"Uncaught ReferenceError",
"fun is not defined"
].join("\n");
let poem = `JavaScript = fun
Uncaught ReferenceError
help is not defined`;
var Duck = Backbone.Model.extend({
name: function name() {
return "duck";
},
sound: function sound() {
return "quack";
}
});
let Duck = Backbone.Model.extend({
name() {
return "duck";
},
sound() {
return "quack";
}
});
promise.then(function (data) {
return data.response;
}).display();
promise.then(data => data.response).display();
var self = this;
var getValue = function () {
return self.value;
});
let getValue = () => this.value;
events.sort(function (e1, e2) {
var d1 = new Date(e1.startDate);
var d2 = new Date(e2.startDate);
return d1 - d2;
});
events.sort((e1, e2) => {
let d1 = new Date(e1.startDate);
let d2 = new Date(e2.startDate);
return d1 - d2;
});
var numbers = [1, 4, 2, 3];
var x = numbers[0];
var y = numbers[1];
var z = numbers[2];
let numbers = [1, 4, 2, 3];
let [x, y, z] = numbers;
var emoji = {category: "people", char: "😁", name: "smile"};
var char = emoji.char;
var name = emoji.name;
var category = emoji.category;
let emoji = {category: "people", char: "😁", name: "smile"};
let {name, category, char} = emoji;
function makeEmoji(name, char, category) {
return {name: name, char: char, category: category};
}
function makeEmoji(name, char, category) {
return {name, char, category};
}
var coordinates = [{x: 1, y: 4}, {x: 3, y: 3}, {x: 2, y: 2}];
var timesAtHome = 0;
var c;
for (var i = 0; i < coordinates.length; i++) {
c = coordinates[i];
if (c.x === 3 && c.y === 3) {
timesAtHome += 1;
}
}
let coordinates = [{x: 1, y: 4}, {x: 3, y: 3}, {x: 2, y: 2}];
let timesAtHome = 0;
for (let {x, y} of coordinates) {
if (x === 3 && y === 3) {
timesAtHome += 1;
}
}
function say(phrase, ...folks) {
folks.forEach(function (folk) {
console.log(folk + ' said "' + phrase + '"');
});
}
function say(phrase, ...folks) {
folks.forEach(folk => console.log(`${folk} said "${phrase}"`));
}
var people = ["Bigelow", "Quil", "Trady Blix", "Lara"]
shout.apply(undefined, "hello world", people)
let people = ["Bigelow", "Quil", "Trady Blix", "Lara"];
shout("hello world", ...people);
var numbers = [1, 2, 3, 4];
var first = numbers[0];
var remaining = numbers.slice(1);
var numbers = [1, 2, 3, 4];
var [first, ...remaining] = numbers;
var first = [1, 2];
var second = [3, 4];
var combined = [].concat(first, second);
var first = [1, 2];
var second = [3, 4];
var combined = [...first, ...second];
function greet(name) {
name = name || 'there';
console.log('Hello ' + name + '!');
}
function greet(name='there') {
console.log(`Hello ${name}!`);
}
import Ember from 'ember';
export default Ember.Component.extend({
// ...
dragEnter: function dragEnter() {
Ember.run(function () {
this.incrementProperty('hoverCounter')
});
},
dragLeave: function dragEnter() {
Ember.run(function () {
this.decrementProperty('hoverCounter')
});
},
// ...
});
import Ember from 'ember';
export default Ember.Component.extend({
// ...
dragEnter() {
Ember.run(() => this.incrementProperty('hoverCounter'));
},
dragLeave() {
Ember.run(() => this.decrementProperty('hoverCounter'));
},
// ...
});
actions: {
addFile: function addFile (data) {
var file = data.file;
var name = data.fileName;
var password = data.password;
var uploader = Uploader.create();
uploader.upload(name, file).then(function () {
this.sendAction('fileUploadedAction', {
file: file,
password: password,
});
}.bind(this));
},
}
actions: {
addFile({file, fileName, password}) {
let uploader = Uploader.create();
uploader.upload(fileName, file).then(() => {
this.sendAction('fileUploadedAction', {file, password});
});
},
}
import Ember from 'ember';
export default Ember.Component.extend({
// ...
flashCopyMessage: function(copied, char) {
var flashMessages = Ember.get(this, 'flashMessages');
var charHTML = '' + char + '';
flashMessages.clearMessages();
if (copied) {
flashMessages.success('Copied ' + charHTML);
} else {
flashMessages.danger("Couldn't copy " + charHTML);
}
},
});
import Ember from 'ember';
export default Ember.Component.extend({
// ...
flashCopyMessage(copied, char) {
const flashMessages = Ember.get(this, 'flashMessages');
const charHTML = `${char}`;
flashMessages.clearMessages();
if (copied) {
flashMessages.success(`Copied ${charHTML}`);
} else {
flashMessages.danger(`Couldn't copy ${charHTML}`);
}
},
});
encryptFile: function () {
var promise = new Ember.RSVP.Promise(function (resolve, reject) {
var key = this.get('key');
readFile(this.get('file')).then(function (file) {
file.data = encrypt(key, file.data);
this.sendAction('encryptedAction', {file: file, key: key});
resolve(file);
}).catch(function (event) {
reject('An error occurred reading the file.');
});
});
return DS.PromiseObject.create({promise: promise});
},
encryptFile() {
let promise = new Ember.RSVP.Promise((resolve, reject) => {
let key = this.get('key');
readFile(this.get('file')).then(file => {
file.data = encrypt(key, file.data);
this.sendAction('encryptedAction', {file, key});
resolve(file);
}).catch(event => {
reject('An error occurred reading the file.');
});
});
return DS.PromiseObject.create({promise});
},
Learn ES2015: https://babeljs.io/docs/learn-es2015/
Try it out: http://babeljs.io/repl
Web consultant available for hire
http://truthful.technology