!!x принуждает тип переменной x к булевому, сохраняя при этом свою правдоподобие или недостаток - см. этот вопрос - у меня есть вопрос о использование этого в условных выражениях.
Несколько раз в JS-коде я видел !!, используемый для принуждения переменной к логическому типу в условии if, например,
if(!!x) {
x.doStuff();
}
Если идея состоит в том, чтобы проверить, существует ли x до вызова методов на ней.
Но в моем собственном коде я всегда использовал
if(x) {
x.doStuff();
}
В предположении, что если x определено, условие будет проходить, а если x - undefined, оно не пройдет.
Итак, мой вопрос какова точка принуждения x к логическому с помощью !! в этом сценарии? Что делает этот код делает это этот код не работает?
Я предполагаю, что другие программисты не просто используют его, потому что он выглядит круто, поэтому либо это, либо одно из моих других допущений неверно: -)