by shigemk2

当面は技術的なことしか書かない

ECMAScript6で何が変わるのか まとめ #ecma262

ECMA-262 Edition 5.1を読む

ECMA-262 Edition 5.1を読む

【完全日本語訳+解説】ECMA-262 Edition 5.1を読む

5分で分かるクイズ。答えは適当に。

ヒント

  • 桁数制限とかあるやつあるから、気をつけてね
  • e
  • 文字列連結

文法

  • ES6では今までの文法が変わるけど、すぐに開発が変わるわけではない

leanpub.com

github.com

  • JSをECMAインターナショナルで標準化したのがEcmaScript
  • ISOの仕様
  • ECMA6だといろいろ文法が出てくる

Arrows

  • CoffeeScriptで出てくるやつで、ラムダが簡単に書けるやつ
  • こういう書き方が出来る。
var odds = evens.map(v => v + 1);
nums.foreach(v => {
  if (v % 5 === 0) fives.push(v);
}
  • 今までのJSとはだいぶちがう…

Classes

ECMA4のころからあったけど、ついにECMA6から入った!

class SkippedMesh extends THREEE.Mesh {
  constructor() {
  }

  update() {
  }
}

Enhanced Object Literals

オブジェクトリテラル

Template Strings

  • テンプレートストリング 改行可能で変数展開も可能
  • これを使うといろいろと変態的なことが出来る
`In JavaScript '\n' is a line-feed`

Destructing

デストラクタ

Default + Rest + Spread

  • 引数省略のデフォルト値を設定できる
  • ...とかくと配列として解釈。など
function f(x, y=12) {
  return x + y;
}

let + const

function f() {
  {
     let x; // レキシカルな定義で別のところでlet xするとエラー
  }
}

iterators

イテレータ

for..of

for (var n of fibonacci) {
}

Generators

ジェネレータ

JavaScript4 MozillaのJavaScript2など

developer.mozilla.org

Unicode

"吉".lenght == 2
  • 2バイト文字列が扱えるようになった
  • コードポインタ
  • ユニコード

Modules

  • exportとかimportとか
export function sum(x, y) {
  return x + y;
}
import * as math from "lib/math";

Module Loaders

www.infoq.com

Map + Set

var s = new Set();
var m = new Map();

WeakMap + WeakSet

  • 弱参照

Proxies

  • プロキシ構文

Symbols

var key = Symbol("key");

Subclassable Built-ins

Math + Number + String APIs

別にこれはいらんだろ…っていう感じの数学関数

Math.acosh(3) // 1.76...
Math.hypot(3, 4) // 5
"abcde".includes("cd") // true

Array + Object APIs

Array.of(1, 2, 3)
[0,0,0].fill(7, 1) // [0,7,7]

Binary and Octal Literals

0b111110111 === 503 // true
0o767 == 503 // true

### Promise
### Tail Calls

再帰呼出しとかで使えるかも

### これらの機能はどのくらい浸透しているの?

[http://kangax.github.io/compat-table/es6/:title]

たいがいのブラウザではES5の機能は使える

ES7はもうほとんど無理

[http://kangax.github.io/compat-table/es7/:title]

### 結論

今すぐWeb開発が変わるわけではない。。

### 追記

[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/imul:embed:cite]