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

これからのJavaScriptの話 そしてES7へ・・・ / JavaScript in Fu...

Shogo Sensui
September 29, 2015

これからのJavaScriptの話 そしてES7へ・・・ / JavaScript in Future

2015年9月29日に行われた第60回HTML5とか勉強会の「これからのJavaScriptの話 そしてES7へ・・・」のセッションの資料です。

Shogo Sensui

September 29, 2015
Tweet

More Decks by Shogo Sensui

Other Decks in Technology

Transcript

  1. ES5

  2. let + const { let string = 'Lorem Ipsum'; }

    console.log(string); // => string is not defined const PI = 3.14; PI = 3.1415; // => PI has already been declared
  3. class class Cat { constructor(name) { this.name = name; }

    meow() { console.log('meow'); } } new Cat('1000ch').meow(); // => meow
  4. Arrow Function let double = function(number) { return number *

    2; }; double = (number) => { return number * 2; }; double = number => number * 2;
  5. Default Parameters const process = (params = {}) => {

    console.log(params); }; process({ edition: 6 }); // => { edition: 6 } process(); // => {}
  6. Array Rest + Spread const process = (...params) => {

    console.log(params); }; process(1); // => [1] process(1, 2, 3); // => [1, 2, 3]
 let array = [100, 1000, 1000]; let spread = [1, 10, ...array]; console.log(spread); // [1, 10, 100, 1000, 1000]
  7. import + export // export.js export const PI = 3.14;

    export let foo = 'bar'; export default class Baz { constructor() { // ... } }; // import.js import Baz, { PI, foo } from './export';
  8. Destruction const ARRAY = [1, 10, 100]; let [one, ten]

    = ARRAY; console.log(one, ten); // => 1, 10 const OBJECT = { foo: 1, bar: 10, baz: 100 }; let {foo, baz} = OBJECT; console.log(foo, baz); // => 1, 100
  9. Template Strings let width = 3; let height = 4;

    let message = `area is ${width * height}`; console.log(message); // => area is 12
  10. Proxy + Reflect let proxied = new Proxy({}, { get:

    function(target, name) { return Reflect.get(target, name); }, set: function(target, name, value, receiver) { console.log(`${name} setter is called`); Reflect.set(target, name, value, receiver); } }); proxied.foo = 100; // => foo setter is called console.log(proxied.foo); // => 100
  11. Set + WeakSet let array = []; let object =

    []; let set = new Set(); set.add('string value'); set.add(object); console.log(set.has(array)); // => false console.log(set.has(object)); // => true
  12. Map + WeakMap let array = []; let object =

    []; let map = new Map(); map.set(array, 'value for array'); map.set(object, 'value for object'); console.log(map.get(array)); // => value for array console.log(map.get(object)); // => value for object
  13. Symbols let key1 = Symbol('foo'); let object = {}; object[key]

    = 'value for key1'; console.log(object['foo']); // => undefined console.log(object[key1]); // => value for key1 console.log(Object.keys(object)); // => []
  14. Exponentiation let squared = 2 ** 2; // same as:

    2 * 2 let cubed = 2 ** 3; // same as: 2 * 2 * 2 let a = 2; a **= 2; // same as: a = a * a; let b = 3; b **= 3; // same as: b = b * b * b;
  15. SIMD (Stage var s1 = SIMD.Float32x4(1, 2, 3, 4); var

    s2 = SIMD.Float32x4(1, 2, 3, 4); var s3 = SIMD.Float32x4(2, 4, 6, 8); console.log(s1 === s2); // => true console.log(SIMD.Float32x4.add(s1, s2) === s3); // => true
  16. Async Functions (Stage 2 fetch('...').then(function (response) { return response.json(); }).then(function

    (json) { console.log(json); }).catch(function (error) { console.log(error); }); try { let response = await fetch('...'); let json = await response.json(); console.log(json); } catch (error) { console.log(error); }
  17. Object Rest + Spread (Stage 2 let { x, y,

    ...z } = { x: 1, y: 2, a: 3, b: 4 }; x; // 1 y; // 2 z; // { a: 3, b: 4 } let n = { x, y, ...z }; n; // { x: 1, y: 2, a: 3, b: 4 }
  18. Decorators (Stage 1 function enumerable(value) { return function (target, key,

    descriptor) { descriptor.enumerable = value; return descriptor; } } class Foo { @enumerable(false) bar() { } @enumerable(true) baz() { } }
  19. WebKit Web Platform Status ECMAScript 6 support in Mozilla Chrome

    Platform Status Microsoft Edge Platform status