2017-02-20 6 views
2

多くの時間真実ifステートメントの変数をdelcareする必要があります。たとえば :ifステートメントへの範囲

if (let entry = entries.find(....)) { 
    // user entry 
} 

しかし、それは働いていない:私はこのようなfor (let i=0; ...)に似combintationsを試してみました

let entry; 
entry = entries.find(....); 
if (entry) { 
    // use entry 
} 

// i dont need entry here 

。私がをletの代わりに使用すると、それは動作しますが、その変数はそのif文ブロックに限定されません。

+4

全体をラップ 'で{} ' – Pointy

+0

変数を避けたい場合は 'if(entries.find(....))' IF .find()が何かを見つけたら、真実の値になります。したがって、ifが動作します。 – Shilly

+0

ああ、ありがとうPointy !!私はこれまでjsラベル付き/ラベルなしのブロックでこれをしたことはありません! – Noitidart

答えて

3

letはブロックスコープを作成するので、スコープを制限するためにブロックスコープの周りに別のブロックを作成する必要があります。

+0

ありがとうございました!あなたと@pointyは正しいです! :) – Noitidart

+0

@Noitidart、それが正しい答えなら、それをそう受け入れることを忘れないようにしてください。 – user7393973

+0

完了@ user7393973 :)私は時間制限のために受け入れることからブロックされました – Noitidart

0

これはおそらく、JSのために作られていませんでしたイディオムであるが、他の答えはおそらくより正確であるが、ちょうど蹴りのために、ここで使用することができヘルパーは、です:

function ifDo (maybeTrueVal, doF) { 
    if (maybeTrueVal) { 
     doF(maybeTrueVal); 
    } 
} 

ifDo(entries.find(....), (truthyVal) => { 
    console.log(truthyVal); 
}); 
+0

非常に楽しい、あなたに感謝@カレゴニズム! – Noitidart

関連する問題