JS.next

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

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

概要

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


基本

これが

function *gfn() {
  let v = yield
  console.log( v )
}

let gen = gfn()
gen.next()
gen.next( 42 )
  //*log*  "42"

こう書けるようになった。

function *gfn() {
  yield
  console.log( function.sent )
}

let gen = gfn()
gen.next()
gen.next( 42 )
  //*log*  "42"


最初に送られた値を取得する

今までは、最初にnextメソッドで送られた値を取得する方法が無かったが、このメタプロパティを使えば取得することが出来る。
例:function.sent無し

gen = gfn( A )
gen.next( B )
gen.next( C )

function *gfn( A ) {
  //  B を取得する方法がない
  let C = yield
}

例:function.sent有り

gen = gfn( A )
gen.next( B )
gen.next( C )

function *gfn( A ) {
  let B = function.sent  // B を取得できる。
  let C = yield
}


実装されるバージョン

V8 4.10.99