Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codelicious: Intro to ES2015

Codelicious: Intro to ES2015

Jack Franklin

July 07, 2016
Tweet

More Decks by Jack Franklin

Other Decks in Technology

Transcript

  1. It’s happening! • Edge 14: 90% • Chrome 52 /

    Opera 39: 98% • FF 49: 93% • Safari 10: 100% • Node 6: 93%
  2. 1 [1, 2, 3].map(function(numbers) { 2 return numbers * 2;

    3 }); 4 5 [1, 2, 3].map(numbers => numbers * 2);
  3. undefined 'Tom' undefined 'Zoe' 1 var person = { 2

    name: 'Jack', 3 friends: ['Tom', 'Zoe'], 4 logFriends: function() { 5 this.friends.forEach(function(f) { 6 console.log(this.name, f); 7 }); 8 } 9 }
  4. 'Jack' 'Tom' 'Jack' 'Zoe' 1 var person = { 2

    name: 'Jack', 3 friends: ['Tom', 'Zoe'], 4 logFriends: function() { 5 this.friends.forEach(f => { 6 console.log(this.name, f); 7 }); 8 } 9 }
  5. 1 var newKey = 'foo'; 2 var newObj = {};

    3 newObj[newKey] = true; 4 5 var otherNewObj = { 6 [newKey]: true 7 };
  6. 1 var str = '2 + 2 is: ' +

    (2 + 2); 2 3 var otherStr = `2 + 2 is: ${2 + 2}`;
  7. 1 var array = [1, 2, 3]; 2 3 var

    [first, ...rest] = array; 4 5 first // 1 6 rest // [2, 3]
  8. 1 var person = { 2 name: 'Jack', 3 age:

    24 4 }; 5 6 var { name, age } = person; 7 8 name // 'Jack' 9 age // 24
  9. 1 var getTweetInfo = function() {...}; 2 3 var {

    text, user } = getTweetInfo();
  10. 1 var person = { 2 name: { 3 first:

    'Jack', 4 last: 'Franklin' 5 } 6 }; 7 8 var { name: { first } } = person; 9 10 first // 'Jack';
  11. 1 var person = { 2 name: { 3 first:

    'Jack', 4 last: 'Franklin' 5 } 6 }; 7 8 var { name: { first: foo } } = person; 9 10 foo // 'Jack' 11 first // ReferenceError
  12. 1 var numbers = [1, 2, 3] 2 var moreNumbers

    = [...numbers, 4, 5]; 3 // moreNumbers [1, 2, 3, 4, 5]
  13. 1 function foo(x = 1) { 2 return x; 3

    } 4 5 foo() // 1 6 foo(2) // 2
  14. 1 function foo(...args) { 2 log('got args', args); 3 }

    4 5 function bar() {...}; 6 7 var args = [1, 2, 3]; 8 bar.apply(this, args); 9 bar(...args);
  15. 1 function foo(obj) { 2 return obj.x + obj.y; 3

    }; 4 5 function foo({ x, y }) { 6 return x + y; 7 }
  16. 1 class Person { 2 constructor(name) { 3 this.name =

    name; 4 } 5 6 fullName() { 7 return `Name is ${this.name}`; 8 } 9 } 10 11 var jack = new Person('Jack'); 12 jack.fullName();
  17. 1 // foo.js 2 export default function() { 3 return

    2; 4 } 5 6 //main.js 7 import foo from './foo'; 8 foo(); // 2
  18. 1 // foo.js 2 function foo() { 3 return 2;

    4 } 5 6 export { foo }; 7 8 // main.js 9 import { foo } from './foo'; 10 foo(); // 2
  19. 1 // some 3rd party library 2 export function merge()

    {...}; 3 export function filter() {...}; 4 export function map() {...}; 5 6 // your app 7 8 import { filter } from 'third-party';
  20. foo = 2 bar = 3 x = fn baz

    = 4 1 var foo = 2; 2 3 function x() { 4 bar = 3; 5 var baz = 4; 6 }
  21. x foo = 1 bar = 2 1 function x()

    { 2 var bar = 2; 3 if (...) { 4 var foo = 1; 5 } 6 }
  22. x bar = 2 foo = 1 baz = 3

    1 function x() { 2 var bar = 2; 3 if (...) { 4 let foo = 1; 5 const baz = 3; 6 } 7 }
  23. 1 const x = 2; 2 x = 3; //

    NOPE! 3 4 const y = { a: 1 }; 5 y = { b: 1 }; // NOPE! 6 7 y.a = 2; //...yeah 8 delete y.a; //...yeah 9 y.b = 3; //...yeah