Upload
net-kanayan
View
412
Download
0
Embed Size (px)
Citation preview
2015/09/26 16:53
1/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
ES6 ES6 はじめましたはじめました@kanayannet
IGGG Meetup 2015 Summer
2015/09/26 16:53
2/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
今日話すこと今日話すこと自己紹介What is ES?
Javascript Problem
そこで 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...
2015/09/26 16:53
4/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
SNSSNSTwitter : @kanayannet
Facebook : HiroakiKanazawa
2015/09/26 16:53
5/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
愛犬家愛犬家
2015/09/26 16:53
6/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
What is ES?What is ES?
ES = EcmaScript
2015/09/26 16:53
7/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
EcmaScript?EcmaScript?
EcmaScript ≒ Javascript
2015/09/26 16:53
8/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
過去の経緯過去の経緯ECMAScriptは Ecma International によって標準化されたスクリプト言語実装ごとの互換性が低い JavaScript 類(特にJScript)の標準を定めたものである。
by Wikipedia
2015/09/26 16:53
9/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
金澤的金澤的 見解見解各社 が JScriptなど独自路線を取ってしまい
「何が標準なの?」状態になったため Ecma International という団体が
「標準規格化」しました...
2015/09/26 16:53
10/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
ECMAECMAってって??
European Computer ManufacturersAssociation
日本のJIS規格的な
2015/09/26 16:53
11/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
ブラウザに採用され始めたのブラウザに採用され始めたのはは??
2015/09/26 16:53
12/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
2009年 version5 からIE9 くらい?
"use strict";未定義のグローバルObjectに代入などを防ぎます。
2015/09/26 16:53
13/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
JavascriptJavascript
ProblemProblemObject指向やる時...
2015/09/26 16:53
14/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
「new」ってやりますよね?
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'
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'
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 て...><
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) // // どうなる?;?;
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;
2015/09/26 16:53
20/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
"use strict" "use strict" でも解消できなでも解消できないい ><><
2015/09/26 16:53
21/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
そこでそこで ES6 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);
2015/09/26 16:53
23/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
先ほどの問題はおきない先ほどの問題はおきないfunction -> class になる事で new し忘れたら、即エラーclass だと 巻き上げ も起きなくなってます。
2015/09/26 16:53
24/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
対応ブラウザ対応ブラウザhttp://kangax.github.io/compat-table/es6/
2015/09/26 16:53
25/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
何か工夫が必要何か工夫が必要
2015/09/26 16:53
26/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
そこでそこで Babel Babel
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
2015/09/26 16:53
28/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
やってみようやってみよう
2015/09/26 16:53
29/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
宣伝宣伝もっと細かい事や仕事などに絡めた話を..
2015/09/26 16:53
30/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
Gunma.webGunma.webでやる予定です。
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
2015/09/26 16:53
32/32 ページhttp://localhost:3000/iggg.md?print-pdf=1#/
ご静聴ご静聴ありがとうございありがとうございました!ました!