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