各実行コンテキストは 変数オブジェクト (variable object) に結び付けられている
10 実行コンテキスト (Execution Contexts)
use strict
while read lineがキモ。
#!/bin/sh filename=$1 cat ${filename} | while read line do echo ${line} done
sh -n
@phi
http://phi-jp.github.io/runstant/release/alpha/
みんなで一緒にコードを書いていこう
jsdoitみたいなやつでECMAを書く
こんな感じでECMAのサンプルのシェアを
template - tmlib.js http://t.co/Mkt3an1xEN #runstant
— 炭鉱ハッカー しげまーくつー (@shigemk2) 2014, 10月 29
EcmaScript 6 のサンプル集 es6からctrl+sでポップアップが出てくるので、そこから。 http://t.co/jW4FnX0kSE #runstant
— 炭鉱ハッカー しげまーくつー (@shigemk2) 2014, 10月 29
Node.jsのECMA6対応状況
v0.12でのV8の採用バージョンは3.28(ちょっと古い)
どのJSから対応していくのか
#es6_casual typeofの歴史的経緯はこれで確認しましょう "The history of “typeof null”" http://t.co/nZ5F8a0Gpz
— azu (@azu_re) 2014, 10月 29
typeof null == 'null'になるようになるやつ(JSをdisるときの常套句 but もとから非推奨)
Brendan Eich
classのほうが価値があるし、opt-inのtypeof nullを"null"にするのは小さなアイデア
harmony_arrow_function
// before var b = [1,2,3,4,5].map(function(x){return x * x}; // after var a = [1,2,3,4,5].map(x => x * x)
名前の衝突回避に使う
// before var obj = { _name :"kaicho" } // after var _name = Symbol("_name")
#es6_casual WeakMapとSymbolでのプライベートプロパティの作り方 ここで試せる。 "Private properties in JavaScript — Curiosity driven" https://t.co/nHSjpjdOTk
— azu (@azu_re) 2014, 10月 29
var map = new Map() map.set('yosuke', 'JavaScript') // ループで回せる // foreachが使える
var setp = new Set() set.add("yosuke") set.add("furukawa") // foreachが使える
イテラブルなfor文
http://www.2ality.com/2012/06/for-of-ff13.html
generatorとfor-ofの組み合わせでイテラブルなやつが作れる
オブジェクトの監視
監視しているオブジェクトの何が更新されたかが分かる→更新検知
ブロックスコープとか。
Schemeの第一級関数オブジェクトを受け継いだ言語
#es6_casual 末尾呼び出し最適化の実装状況です "Chromium Dashboard" https://t.co/feOjv9cl1o
— azu (@azu_re) 2014, 10月 29
末尾再帰最適化はなぜかes6-tableの1段目にある http://t.co/2LA0qXgvzF #es6_casual
— teppeis (@teppeis) 2014, 10月 29
ECMAのプロキシオブジェクトを使えばそれが実現出来ちゃう
プロキシによるイミュータブルな配列 破壊メソッドにsliceを挟んで非破壊メソッドに変えたり出来る
関数型の機能をES6でどう実現化するか
ESになっても完全な関数型にはならないが、表現力は上がっている
Arrayまわりでいろいろ追加された
Array.prototypeってもうすでに個人で実装していないか?
genericな名前が多いので、便利メソッドが追加されたことで大問題
ES6が有効になった瞬間に壊れるコードがある
@@(あんすこーぱぶる)を利用してすごいダーティな実装をやってる
とりあえずwithやめろ
enumerableだったのがES6になったらnon-enumerabuleになった
どうしようもない感じ
chromeで一時期壊れる事件
Google製品にはだいたい入っているので毎日使っているよ
Githubに移行
compile ES6 to ES3
http://kangax.github.io/compat-table/es6/
対応チェックの自動化
ES7
tc39/ecma262
rwaldron/tc39-notes TC39のMTGノートがまとまってる ポッドキャスト感覚で読むといいかも