32
2015/09/26 16:53 1/32 ページ http://localhost:3000/iggg.md?print-pdf=1#/ ES6 ES6 はじめました はじめました @kanayannet IGGG Meetup 2015 Summer

ES6 はじめました

Embed Size (px)

Citation preview

Page 1: ES6 はじめました

2015/09/26 16:53

1/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

ES6 ES6 はじめましたはじめました@kanayannet

IGGG Meetup 2015 Summer

Page 2: ES6 はじめました

2015/09/26 16:53

2/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

今日話すこと今日話すこと自己紹介What is ES?

Javascript Problem

そこで ES6

宣伝

Page 3: ES6 はじめました

2015/09/26 16:53

3/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

自己紹介自己紹介名前 : 金澤 宏昭開発環境

OS : CentOS(Linux) , Mac

言語 : Ruby , Perl , JS , HTML , CSS...

Page 4: ES6 はじめました

2015/09/26 16:53

4/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

SNSSNSTwitter : @kanayannet

Facebook : HiroakiKanazawa

Page 5: ES6 はじめました

2015/09/26 16:53

5/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

愛犬家愛犬家

Page 6: ES6 はじめました

2015/09/26 16:53

6/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

What is ES?What is ES?

ES = EcmaScript

Page 7: ES6 はじめました

2015/09/26 16:53

7/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

EcmaScript?EcmaScript?

EcmaScript ≒ Javascript

Page 8: ES6 はじめました

2015/09/26 16:53

8/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

過去の経緯過去の経緯ECMAScriptは Ecma International によって標準化されたスクリプト言語実装ごとの互換性が低い JavaScript 類(特にJScript)の標準を定めたものである。

by Wikipedia

Page 9: ES6 はじめました

2015/09/26 16:53

9/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

金澤的金澤的 見解見解各社 が JScriptなど独自路線を取ってしまい

「何が標準なの?」状態になったため Ecma International という団体が

「標準規格化」しました...

Page 10: ES6 はじめました

2015/09/26 16:53

10/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

ECMAECMAってって??

European Computer ManufacturersAssociation

日本のJIS規格的な

Page 11: ES6 はじめました

2015/09/26 16:53

11/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

ブラウザに採用され始めたのブラウザに採用され始めたのはは??

Page 12: ES6 はじめました

2015/09/26 16:53

12/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

2009年 version5 からIE9 くらい?

"use strict";未定義のグローバルObjectに代入などを防ぎます。

Page 13: ES6 はじめました

2015/09/26 16:53

13/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

JavascriptJavascript

ProblemProblemObject指向やる時...

Page 14: ES6 はじめました

2015/09/26 16:53

14/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

「new」ってやりますよね?

Page 15: ES6 はじめました

2015/09/26 16:53

15/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

Sample CodeSample Codevarvar Name = Name = functionfunction((namename)){{ thisthis.name = name;.name = name;}}varvar hoge = hoge = newnew Name( Name('Hiroaki Kanazawa''Hiroaki Kanazawa'););consoleconsole.log(hoge.name); .log(hoge.name); // -> 'Hiroaki Kanazawa'// -> 'Hiroaki Kanazawa'

Page 16: ES6 はじめました

2015/09/26 16:53

16/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

ちなみにちなみに 「「newnew」を忘れる」を忘れるとと..?..?

varvar Name = Name = functionfunction((namename)){{ thisthis.name = name;.name = name;}}varvar hoge = Name( hoge = Name('Hiroaki Kanazawa''Hiroaki Kanazawa'););consoleconsole.log(name); .log(name); // -> 'Hiroaki Kanazawa'// -> 'Hiroaki Kanazawa'

Page 17: ES6 はじめました

2015/09/26 16:53

17/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

なぜなぜ??Global Object に代入されてしまった。

Global Object -> window.name -> name

"use strict" で問題に気付かせる事は出来る。とはいえ..new するのに function て...><

Page 18: ES6 はじめました

2015/09/26 16:53

18/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

これどうなるこれどうなる??"use strict""use strict";;varvar fuga = fuga = "global""global";; functionfunction funcfunc(()) {{ consoleconsole.log(fuga) .log(fuga) // // どうなる?;?; varvar fuga = fuga = "local""local";; consoleconsole.log(fuga) .log(fuga) // // どうなる?;?;}}func();func();consoleconsole.log(fuga) .log(fuga) // // どうなる?;?;

Page 19: ES6 はじめました

2015/09/26 16:53

19/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

巻き上げ巻き上げ"use strict""use strict";;varvar fuga = fuga = "global""global";; functionfunction funcfunc(()) {{ consoleconsole.log(fuga) .log(fuga) // -> undefined;// -> undefined; varvar fuga = fuga = "local""local";; consoleconsole.log(fuga) .log(fuga) // -> local;// -> local;}}func();func();consoleconsole.log(fuga) .log(fuga) // -> global;// -> global;

Page 20: ES6 はじめました

2015/09/26 16:53

20/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

"use strict" "use strict" でも解消できなでも解消できないい ><><

Page 21: ES6 はじめました

2015/09/26 16:53

21/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

そこでそこで ES6 ES6

Page 22: ES6 はじめました

2015/09/26 16:53

22/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

Sample CodeSample Codeclassclass NameName {{ constructor(name){ constructor(name){ thisthis.name = name;.name = name; } }}}varvar hoge = hoge = newnew Name(); Name();consoleconsole.log(hoge.name);.log(hoge.name);

Page 23: ES6 はじめました

2015/09/26 16:53

23/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

先ほどの問題はおきない先ほどの問題はおきないfunction -> class になる事で new し忘れたら、即エラーclass だと 巻き上げ も起きなくなってます。

Page 24: ES6 はじめました

2015/09/26 16:53

24/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

対応ブラウザ対応ブラウザhttp://kangax.github.io/compat-table/es6/

Page 25: ES6 はじめました

2015/09/26 16:53

25/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

何か工夫が必要何か工夫が必要

Page 26: ES6 はじめました

2015/09/26 16:53

26/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

そこでそこで Babel Babel

Page 27: ES6 はじめました

2015/09/26 16:53

27/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

installinstall

* script.js は es6 で書かれている

npm npm installinstall - -gg babel babelbabel script.jsbabel script.js

Page 28: ES6 はじめました

2015/09/26 16:53

28/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

やってみようやってみよう

Page 29: ES6 はじめました

2015/09/26 16:53

29/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

宣伝宣伝もっと細かい事や仕事などに絡めた話を..

Page 30: ES6 はじめました

2015/09/26 16:53

30/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

Gunma.webGunma.webでやる予定です。

Page 31: ES6 はじめました

2015/09/26 16:53

31/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

よかったら参加して下さいよかったら参加して下さいハッシュタグ : #gunmaweb

2015/10/3

https://gunmaweb.doorkeeper.jp/events/29858

Page 32: ES6 はじめました

2015/09/26 16:53

32/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/

ご静聴ご静聴ありがとうございありがとうございました!ました!