ECMAScript6策定目前! ECMA262読書会・1周年記念会 - ECMA262-Edition5.1読書会 | Doorkeeperに参加してきたのメモ


ECMAScript6で何が変わるのか - 竹迫良範

  • 【完全日本語訳+解説】ECMA-262 Edition 5.1を読む
  • 絶版になった
  • Understanding… by Nicholas C. Zakas [Leanpub PDF/iPad/Kindle]
  • ES6だと新しいモノが色々入ってる
  • ISOのバージョンとかとややこしいのECMAScript 2015という名前に
  • ES6の新しい機能
  • Arrow Functions
    • =>
  • Classes
    • クラス構文
  • Enhanced Object Literal
    • methodのショートハンド
    • Computed propety name
  • Temlplate Strings
    • バッククオートで書ける
  • Destructuring
  • Default + Rest + Spread
    • 引数のデフォルト値
  • let + const
  • iterators
  • Unicode
    • 吉野家 みたいなサロゲートペアを扱うことができるように
    • //u\u、codePointAt
  • Modules
  • Module loaders
  • WeakMap/WeakSet
  • Proxy
  • Symbol
  • Math + Number + String API
  • 0b0o 2進数や8進数のリテラル表現

などなど詳細はlukehoban/es6features


ECMA262 Edition 5.1読書会 ここまでのおさらい - @furandon_pig

AltES6 Introduction

  • ECMAScript 読書会
  • ECMAScriptの仕様書をみんなで読み進める読書会
  • ECMA262-Edition5.1読書会 | Doorkeeper
  • ES5.1 仕様書の内容に沿って読み進めてる
    • 第12条まで読み進めてた
  • 第4条概要
    • ECMAScriptの概要
    • 言語仕様にとらわれない概要
    • 外部データや出力先は規定せず
    • 計算環境自体がホストオブジェクト
  • ECMAScriptはオブジェクトベース
    • オブジェクトとはプロパティのコレクション
  • プロパティとは
    • プリミティブ値と関数を格納するコンテナ
    • プリミティブ値は最も低いレベルで扱うデータ
      • string
      • number
      • nullなど
  • オブジェクトとメソッド
  • ECMAScript does not use classes such as those in C++, Smalltalk, or Java.

  • http://people.mozilla.org/~jorendorff/es6-draft.html#sec-objects
  • クラス自体を持ってる訳ではなく、それを表現するためにオブジェクトなどを使うという話
  • オブジェクトはプロパティのコレクション
  • プロパティは以下の3種類が定義されてる
    • 名前付きデータプロパティ
    • 名前付きアクセサプロパティ
    • 内部プロパティ
      • 内部プロパティはユーザからは見えない、内部的な処理
      • [[hoge]]という感じで表現される
  • JavaScriptでの継承
  • データ型
    • プリミティブ型
    • 仕様書型
      • Referrence
      • Completion
      • など
    • がES5.1dで規定されてる
      • 仕様書型は最初に押さえてないと、仕様書を読むのが難しくなる
  • Referrence仕様書型
    • JavaScriptで変数で値が入ってない時undefinedとなるような、
    • そのReferenceの仕組みを定義してる型
    • 変数と値をバインディングする型
  • Completion仕様書型
    • breakやreturnなどのふるまいを説明するための方
    • ([[type]], [[value]], [[target]])のタプル値
    • 中途完了 = typeがnormal以外の値
  • PropertyDescriptor型
    • データプロパティ記述子
      • [[Value]]など
      • データプロパティはプロパティの今の値を取ってくるだけ
    • アクセサプロパティ記述子
      • [[Get][[Set]] という名のフィールド
    • Object.defineProperty() などで触れる場所
  • オブジェクトの内部メソッドのアルゴリズム
    • 擬似言語的にアルゴリズムが定義されてる
  • Lexical Enviroment
    • レキシカル環境
    • レキシカル環境とEnvironment Recordsは仕様書の中で出てくる表現なので、実装を使ったそれをプログラムから参照できるわけではない
  • オブジェクトの内部メソッドのアルゴリズム

FAQ

  • for…inの順番
    • ES5は未定義、ES6は定義
var a = [20,3];
a.propertyIsEnumerable();// falseなのはなんで?

以下のように使うのが正解

var a = [20,3];
a.propertyIsEnumerable(0);// false

MDN

FAQ. Completion型とかはあくまで仕様。V8とかはそれ自体はコストがでかいので実装してない。 外から見える動作をテストしている。

新しい仕様も最初はナイーブな実装型から初めて、テストで固めてやっていく。 ESDiscussも実装者が多いので、まずい仕様はそこまで来ない。


AltES6 Introduction - @make_now_just

  • AltES6
    • Alt言語からES6へ変換される言語
  • ES6にコンパイルされる
    • 重いランタイムなどは要らないのでシンプル
  • AltJSの言語例
  • Earl Grey
    • 実行にはruntimeが必要
    • Pythonっぽい構文だけど、何でも入ってる
  • SpiderとEarl Grey
    • ES5とES6どちらに変換するかを選べる
    • ES6のASTを作った後にescodegenで変換

まんがタイム WebKit のドキドキ☆ビジュアル ES - @Constellation

  • Webkit
  • ES6の進捗がV8みたいな感じに見える
  • WebkitのJSCは55%ぐらいES6実装されてる
  • The WebKit Open Source Project - Web Platform Status
    • 実装状況がステータスが乗ってる
  • 乗ってる実装
    • ES6 Classes
      • letやconstがまだなので乗ってないためTDZがダメ
    • Symbols
      • Symbol実装される
    • Template Strings
      • Tempalte Litral
      • Tagged Template
    • for-of
      • throwでreturnも対応してる
  • WebKit Nightly Builds で試せる

Macだとナイトリーでも簡単にビルドできる


ECMAScript 6 Draft Hisotry Repo - azu

スライド: ECMAScript 6 Draft Hisotry Repo

以前書いたECMAScript 6ドラフトのDiff検索用リポジトリを作った | Web Scratchについての発表。

ES6のドラフトの文章を管理するGitリポジトリを作った話で、tigなどを使って検索する手段などについての話。