2017-09-08 4 views
1

私はImmutable.jsコードで遊んでいて、なんらかのファンキーなことに気づいた。 Immutable.jsは、使用されない変数に保存するコードをスキップしますか?上記のコードの場合ImmutableJSは未使用のコードブロックをスキップしますか?

const Immutable = require('immutable') 

function transformErrors(errors) { 
    let key = errors.keySeq() 
    let mapped = key.map((v, keystr) => { 
     console.log(v, keystr) 
     return keystr 
    }) 
    // If I enable the console log below, console log above works 
    // console.log('mapped', mapped) 
}; 
const result = transformErrors(Immutable.fromJS([1, 2])); 

console.log('mapped', mapped)

が無効になっている場合は、マッピングのコードが呼び出されません。 ドキュメントを見てもそれについての説明はありません

答えて

1

行:let key = errors.keySeq()は、Seqオブジェクトを返します。これはimmutable.jsが怠惰です。 - 配列は、任意のメソッド呼び出しに応答するよう必要に応じて少し作業を行い

配列は怠け者です:

ドキュメントには、次の詳細(https://facebook.github.io/immutable-js/docs/#/Seq)を提供します。値は、リストまたはJavaScript配列などの具体的なデータ構造に縮小または変換する際の暗黙的な繰り返しを含む反復処理中に作成されることがよくあります。 は、たとえば、次のよう行わず仕事は、結果の配列の値が繰り返されることはありませんので:mappedが使用されるまで、あなたの例ではそう

const { Seq } = require('immutable') 
const oddSquares = Seq([ 1, 2, 3, 4, 5, 6, 7, 8 ]) 
    .filter(x => x % 2 !== 0) 
    .map(x => x * x) 

は、実際にあなたのマップ機能を評価するつもりはないimmutable.jsどこかに。

関連する問題