!!expr
возвращает логическое значение (true
или false
) в зависимости от правды выражения. Это имеет смысл при использовании в небулевых типах. Рассмотрим эти примеры, особенно третий пример и далее:
!!false === false
!!true === true
!!0 === false
!!parseInt("foo") === false // NaN is falsy
!!1 === true
!!-1 === true // -1 is truthy
!!"" === false // empty string is falsy
!!"foo" === true // non-empty string is truthy
!!"false" === true // ...even if it contains a falsy value
!!window.foo === false // undefined is falsy
!!null === false // null is falsy
!!{} === true // an (empty) object is truthy
!![] === true // an (empty) array is truthy; PHP programmers beware!
Я собираюсь дать вам задание на фрейм. Ответ здесь.
Как выполнить модульное тестирование схемы XSD ...
blockquote>Нет. То есть не беспокойтесь. Вы потратите больше времени на настройку модульных тестов, чем когда-либо, если бы вы поймали ошибку подтверждения в модульном тесте.
Почему? Потому что, если ошибка проверки вызывает реальную серьезную ошибку, что не всегда так, у вас все равно будет ошибка, вы просто потратите много времени, чтобы найти ее в модульном тесте, а не функциональном тесте.
Модульные тесты были популярны пару лет назад, пока все не поняли, что ROI, как правило, является чистым негативом.