2017-02-20 140 views
2

很多時候我需要爲一個truthy if語句刪除一個變量。 例如:作用於if語句的範圍

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

// i dont need entry here 

我試過類似for (let i=0; ...)這樣combintations:

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

但它不工作。如果我使用var而不是let,它可以工作,但是它所掛起的變量並不侷限於if語句塊。

+4

裹在'整件事{}'。 – Pointy

+0

'if(entries.find(....))'如果你想避免變量。如果.find()發現了一些東西,它將是一個真值,因此如果有效。 – Shilly

+0

哦,哇,謝謝波蒂!我從來沒有在js中做過標記/未標記的塊! – Noitidart

回答

3

由於let創建一個塊的範圍,你需要創建它周圍的其他塊限制其範圍。

+0

謝謝Konst!你和@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

非常有趣,謝謝@Carcigenicate! – Noitidart