ES6+カジュアルトーク行った #es6_casual
6つのLTどれも面白くて前日申し込みで滑り込めて本当に良かった。 カジュアルトークということで、全部で1時間半くらいとあんまり疲れなかったし、 でも内容は全然カジュアルじゃなく深い感じで本当に楽しい時間だった。
@teppeisさんのLTがかなり良くて資料をあとで見直したい。 Closure Compilerがあんなに高機能だったとは知らなかったw
ハッシュタグに かなり補足情報があったので後で読もう。
以下、メモ
Runstantで始めるEcmaScript6
- @phi_jp
- Runstant
- http://phi-jp.github.io/runstant/release/alpha/
- 全部消して「es6」と入力してCmd-sでES6サンプル集
Node.js v0.12で使えるようになるES6+αの機能
Node.js v0.12で使えるようになるES6+の機能一覧 // Speaker Deck
- @yosuke_furukawa
- DeNA
- Node.js日本ユーザグループ代表
- v0.12ブランチをビルドして確認、v8のバージョンは3.28
- v8の最新は3.30
- v0.12で削除されたオプション
harmony_typeof
typeof null == 'null'
がtrue
になるオプション- 元から非推奨
- 追加されたオプション
harmony_arrow_functions
- アロー関数
- デフォルトになった機能
- Symbol
- オブジェクトのkeyに利用できる特殊なオブジェクト
- Symbol
function getObj() {// // _nameはこのスコープじゃないと使えないので実質的に_nameはprivaete var _name = Symbol("_name"); var obj = { name: 'hoge' }; obj[_name] = 'hoge'; return obj; } var obj = getObj(); console.log(obj) // { name: 'hoge '}
- Collections
- Map, Set
- Set.prototype.keysとSet.prototype.valuesは同じものが返る
- -> 内部はMapでできてる
- for-of
- IterableなものならOK
Symbol.iterator
で作れる
var hoge = { [Symbol.iterator]() { return { next () { if (終わってない) return {done: false, value: '...'}; return {done: true}; } }; } }
- GeneratorもIterable
- Promise
- Object.observe
Array.observe(array, callback(changes))
ES6による 関数型プログラミング
- @TanUkkii007
- 安田さん
- 株式会社トライフォート
- 関数型とJavaScript
- JSはSchemeベース
- 第1級関数オブジェクトがあるでござる
const
不変性use strict
有り無しで挙動ちゃうで
- パターンマッチ
- 分割代入
- 再帰
- 関数型は再帰や。副作用使わんからな
- ES6で末尾呼び出し最適化入るで。
function hoge (n) { return hoge(n - 1); // これが末尾呼び出しや }
- 不変性
Introducing break the Web
- @Constellation
- ES6はArray結構拡張した
Array.prototype
って既に拡張してる人いない?居るならぶっ壊れるよvalues
,keys
とか被りそうな名前やし
var values = []; with(object) { values = ...; // objectがArray継承してたら死 }
@@unscopables
- case1 MooTools
−
Array.prototype.contains
の上書き- jsfiddleがぶっ壊れた
- es-discussでは
has
にしようかみたいな議論が出てた- 出てたソリューションはどうしようもない感じ
- case2 outlook.com
- ChromeのStableで。
- まとめ
- コードを省略しない
in
じゃなくてhasOwnProperty
使おう
- Object.prototypeとか将来的に拡張される可能性があるのでそういうの考えよう
with
使うな。use strict
で使えなくなるけど。
- コードを省略しない
Closure CompilerのES6対応あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
- @teppeis
- サイボーズ
- kintone作ってる
- Closure Compiler − 超圧縮&最適化
- ECMASCript6
- オプションで指定
- 未実装:Modules, super(class)
- es6 tableにclosure compilerあるからそこで見ればOK
- Tracuerは自前で実装しすぎててruntimeが大きくなってて微妙
- ES6はAltJSのいいとこ取りなので全部実装されればいい感じやで
- AltJSと出口戦略
- ES6時代のAltJS
- Facebook Flow, TypeScript, AtScript, etc
- ECMAScript Typesが提案に
明日には使えなくなるES7トーク
http://azu.github.io/slide/es6talks/
- @azu_re
- JSer.info
- TC = 専門委員会
- Stage 0 ~ 4
- 今日は0はほとんどアイデアレベル
- 4でテスト作る。
- AtScript, FlowはTypeScriptの型定義を真似てるらしい
- tc39-notesを見ればだいたいわかるよー