Właśnie przeglądałem kod źródłowy QUnit (1.12.0) i natknąłem się na linię, która mnie pomyliła. Zrobiłem trochę googla i nie byłem w stanie znaleźć powodu.
Źródło: http://code.jquery.com/qunit/qunit-1.12.0.js linia 520
result = !!result;
Podobna rzecz pojawia się dalej w kodzie, z wyjątkiem tego, że zamiast przechowywać wynik w sobie, przechowuje podwójnie zanegowaną zmienną w JSON.
Źródło: http://code.jquery.com/qunit/qunit-1.12.0.js linia 957
result: !!result
Tak jak ! neguje, zakładam !! będzie zanegować, a następnie ponownie zanegować, kończąc na tym, z czym zacząłeś. W takim przypadku, co osiąga się przez ustawienie zmiennej równej sobie, dwukrotnie zanegowanej? (Lub w tym ostatnim przykładzie, powracając do siebie dwukrotnie zanegowany, zamiast po prostu powrócić sam.)
Odpowiedzi:
0 dla odpowiedzi № 1!!
służy do konwersji wartości z prawej strony na równoważną wartość logiczną.
Sprawdź także to Wątek.