JS.next

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

★☆☆

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

概要 ES2015で特定の形で関数呼び出しがされている場合に末尾呼び出し最適化が行われるよう定められたが、 パフォーマンスや、デバッグなどの実装上の問題が浮上したため、それを解決するための新たな構文がV8で実装された。 (※提案初期段階の仕様のため、…

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

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

Function#nameについて

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

@@hasInstanceが実装された

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

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

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

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

概要 ある関数Aから別の関数Bを呼び出すとき、処理系は後で戻って来れるように一旦Aの状態を保存し、関数Bの処理に入る。 これが問題になるのは再帰の時で、数万回程度の再帰でスタックが一杯になり、エラーとなってしまう。 しかし、もし関数B呼び出しの際…

@@speciesが実装された

概要 クラスの種族を設定するためのビルトインシンボルが実装された。

Array.prototype.copyWithinが実装された

概要 copyWithinは配列の一部の区間を任意の位置から貼り付ける破壊的メソッドである。

@@isConcatSpreadableが実装された

概要 @@isConcatSpreadableは、Array.prototype.concatメソッドにおいての振る舞いを指定するビルトインシンボルである。

RegExp.prototype.flagsゲッターが実装された

概要 正規表現オブジェクトのフラグが何か取得するためのゲッターである。

ユニコードエスケープシーケンスが拡張された

概要 今まではサロゲートペアによる文字を1シーケンスで表すことが出来なかったが、ES2015では『\u{xxxxx}』の形式で「0xffff」を超える文字コードを表すことができる。

@@unscopablesが実装された

概要 with文に与えたオブジェクトの特定のプロパティがスコープに含まれることを防ぐための、 ビルトイン"unscopables"シンボルが実装された。

Map、Setが正しく実装された

概要 今までV8ではMap、Setコンストラクタの引数付きの呼び出しが正しく実装されていなかったが、この度正しく実装された。 引数にイテラブル(=@@iteratorメソッドを持つ)オブジェクトを渡すことで、それを元に初期化させることができる。

{Map,Set}.prototype.{values,keys,entries}が実装された

概要 Array.prototype.{values,keys,entries}と同じような要領でコレクションを列挙することができる。 列挙される順序はコレクションに加えた順序と同じであることが保証される。

for文でのlet変数が毎ループ新スコープを持つようになった

概要 かつてはfor文初期化句で宣言された変数は、for文の直前で宣言されたように振舞っていたが、各ループでスコープを引きづらないように仕様が変更され、V8も追従した。

ES2015では何が同値とみなされるか まとめ

概要 ES2015で導入されるObject.isとCollectionのkeyにおいて、何が「同じ」と見なされるのかをまとめてみる。

Array.prototype.fillが実装された

概要 配列の指定した範囲を、指定した値で満たすことができる、破壊的メソッドである。

{Map,Set}.prototype.forEachが実装された

概要 Array.prototype.forEachと同じような要領でコレクションを列挙することができる。 列挙される順序はコレクションに加えた順序と同じであることが保証される。

Object.setPrototypeOfが実装された

実装されたメソッド Object.setPrototypeOf(target, proto) targetオブジェクトのプロトタイプをprotoに設定する 返り値はtargetで、protoはオブジェクトまたはnullである必要がある

ArrayBuffer.isViewが実装された

実装されたメソッド ArrayBuffer.isView 指定したオブジェクトが、TypedArray(型付配列)やDataViewかの真偽値を返す より正確には…… 『ViewedArrayBuffer』内部プロパティを持っているかどうか これはArrayBufferへのインターフェイスを提供してくれるような…