JS.next

JavaScriptの最新実装情報を追うブログ

async関数が実装された

概要

非同期な処理を同期的に書ける関数タイプが実装された。

続きを読む

明示的な末尾呼び出し最適化構文が実装された

概要

ES2015で特定の形で関数呼び出しがされている場合に末尾呼び出し最適化が行われるよう定められたが、
パフォーマンスや、デバッグなどの実装上の問題が浮上したため、それを解決するための新たな構文がV8で実装された。
(※提案初期段階の仕様のため、この先廃止になったり仕様が大きく変わる可能性が大いにあります)

続きを読む

ユニコード文字プロパティについて

概要

正規表現でひらがなにマッチさせる場合によく「 /[ぁ-ん]/ 」とするが、これを「 \p 」エスケープ表現を使って、
「 /\p{Block=Hiragana}/u 」のように分かりやすく書けるようにするための新たな仕様がV8で実装された。
(※提案初期段階の仕様のため、この先廃止になったり仕様が大きく変わる可能性が大いにあります)

続きを読む

Function#nameについて

概要

ES2015からは名前の無い関数定義であっても、コンテキストによって関数のnameプロパティが定義されるようになった。

続きを読む

String.prototype.pad{Start,End}が実装された

概要

対象の文字列の先頭や終わりに、指定した長さになるように、指定した文字列を繰り返して埋めるメソッドが実装された。

続きを読む

べき乗演算子が実装された

概要

Math.pow関数の代わりに新しい演算子「 ** 」でべき乗の演算ができるようになった。

続きを読む

@@hasInstanceが実装された

概要

インスタンスであるか判定するためのビルトインシンボルが実装された。

続きを読む

function.sentメタプロパティが実装された

概要

ジェネレータ内で直近に送られた値を返すfunction.sentメタプロパティが実装された。

続きを読む

末尾呼び出し最適化が実装された

概要

ある関数Aから別の関数Bを呼び出すとき、処理系は後で戻って来れるように一旦Aの状態を保存し、関数Bの処理に入る。
これが問題になるのは再帰の時で、数万回程度の再帰でスタックが一杯になり、エラーとなってしまう。
しかし、もし関数B呼び出しの際に、関数Aに戻ってきて処理を続ける必要のない形で呼びだされていれば、
状態の保存を省略して関数Bに移行する最適化が可能であり、ES2015でその詳細が定義されることとなった。

続きを読む

Object.{values,entries}が実装された

概要

オブジェクトの全ての列挙可能なプロパティの文字列キーの配列を返すObject.keys関数に似た、
値の配列を返すObject.valuesと、キーと値のペアの配列を返すObject.entries関数が実装された。

続きを読む