2017-02-20 99 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