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

メドレー開発部TechLunch ECMAScript四方山話

メドレー開発部TechLunch ECMAScript四方山話

メドレー開発部TechLunchで発表した内容を掲載しました。

メドレーで開発部では、隔週で社内勉強会が開かれています。
今回は、「ECMAScript四方山話」というタイトルで発表し、社内でも利用がされてきているECMAScript2015以降の仕様について歴史やどう制定されているかのお話をしました。

発表者:平木 聡

Medley Inc.

April 11, 2017
Tweet

More Decks by Medley Inc.

Other Decks in Technology

Transcript

  1. ϒϥ΢β͝ͱʹ࣮૷ܥ͕͋Δ » Microsoft Edge » Chakra(JavaScript) / Edge » Mozilla

    Firefox » SpiderMonkey / Gecko » Google Chrome » V8 / Blink » Apple Safari » JavaScript Core / Webkit
  2. צҧ͍͞Ε·͕͢ ϒϥ΢βͰΑ͘ॻ͘͜͏͍͏ίʔυ͸ const hoge = document.querySelector('.hoge'); hoge.addEventListener((evt) => { evt.preventDefault();

    evt.target.className = 'hoge huga'; }); // or const state = { foo: "bar" }; history.pushState(state, "page 2", "bar.html");
  3. ECMAScript6ʹ͍ͭͯ » ECMAScript6 ≒ ECMAScript2015ʹͳΓ·͢ » ECMAScript5͔Β͞Βʹ6೥ͨͬͯ͠·ͬͨͷͰ൓লͱͯ͠όʔδϣ χϯάํ๏Λม͑ͨ » Ҏલͱҧ֤ͬͯϒϥ΢βͷόʔδϣϯΞοϓ΋සൟʹͳͬͯ͜Μͳ

    ʹ͔͔࣌ؒΔͱ࣮૷ͱ཭Εͯ͠·͏ݒ೦ » ͳͷͰ6ͷࡦఆ్த͔Β2015ʹݺশΛվΊ·ͨ͠ » ࣮࣭6ͳΜͰ໊͕͢শͱͯ͠͸2015͕ਖ਼͍͠(͸ͣ)
  4. Array.prototype.includes() ͜Μͳײ͡ɻ [1, 2, 3].includes(2) // true [1, 2, 3].includes(4)

    // false [1, 2, NaN].includes(NaN) // true [NaN].indexOf(NaN) // -1
  5. Exponentiation Operator ΂͖৐ΛදΘ͢ԋࢉࢠɻES2016ʹೖͬͯΔɻ let cubed = 2 ** 3; //

    cubed = 8 // same as: 2 * 2 * 2 let a = 2; a **= 2; // a = 4; // same as: a = a * a;
  6. Trailing commas in function parameter lists and calls function hoge(

    foo, bar, baz, ) {/*...*/} hoge( 'foo', 'bar', 'baz', ) {/*...*/}
  7. String.prototype.padStart(padEnd) ͜Μͳײ͡ɻ let str = 'abc'; str.padStart(10); // str =

    " abc" str.padEnd(10) // str = "abc " str.padStart(10, '0123456789'); // str = "0123456abc" str.padEnd(10, '0123456789'); // str = "abc0123456" str.padStart(20, '0123456789'); // str = "01234567890123456abc" str.padEnd(20, '0123456789'); // str = "abc01234567890123456"
  8. ECMAScript Function Bind Syntax jQueryΈ͍ͨʹ΋Ͱ͖Δ! import { map, takeWhile, forEach

    } from "iterlib"; getPlayers() ::map(x => x.character()) ::takeWhile(x => x.strength > 100) ::forEach(x => console.log(x));
  9. Nested import declarations ͜Μͳײ͡ʹͳΔɻ // άϩʔόϧ import { a, b

    } from "./ab"; // ͜ͷείʔϓ಺Ͱ͸'./xy.js'ͷػೳΛimport { import { x, y } from "./xy"; }
  10. Nested import declarations ؔ਺είʔϓͰ͸͜Μͳײ͡ʹͳΔɻ console.log("x", getX()); // getX()಺͚ͩͰ'./xy.js'Λimportͯ͠࢖͏ function getX()

    { import { x } from "./xy"; return x; } // طଘͷ`x`ʹӨڹͳ͍Α͏ʹΫϩʔδϟͰฦ͢͜ͱ΋Մೳɻ function getXFn() { import { x } from "./xy"; return () => x; } const getX2 = getXFn(); setTimeout(() => { console.log("current x:", getX2()); }, delay);
  11. ਖ਼ࣜͰ͸ͳ͍͚Ͳৄ͍͠৘ใݯ » ᶄality – JavaScript and more » Mathias Bynens

    » Introduction · ECMAScriptͱ͸Կ͔ʁ » ECMAScriptͷ࢓༷ࡦఆʹؔ͢ΔΧϯχϯάϖʔύʔ | Web Scratch