Отрицание приводит любой тип к
логическому /
boolean и возвращает обратное.
0, "", null, undefined -
false.
Числа, строки (кроме пустой), массивы, объекты, функции -
true.
!true == false //!tue равно false
!0 == true
/*
0 становится конвертируется в логический тип - false, потом возвращается противоположное значение true
*/
Двойное отрицание используется, чтобы привести к логическому типу.
например, в зависимости от строки тебе нужно в переменную присвоить true или false.
function f(str) {
return !!str;
}
f("") // вернет false
f("1") //вернет true