Я обсуждал эту тему с коллегой около недели. Я очень люблю сокращенный код, использующий троичные файлы и т. Д. Везде, где это возможно. В последнее время он приставал ко мне из-за того, что я использую двойные восклицания. Проведя многочисленные тесты, я начинаю соглашаться с ним ... двойные восклицания, возможно, нецелесообразно использовать в моем коде. Учтите это:
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
Приведенный выше пример работает должным образом. Однако, если мы проверяем переменную, которая может возвращать undefined, мы получаем ошибку, особенно в IE7. Однако мы получим ожидаемый результат, если запустим это в нашей консоли:
if(randomvar) alert('Works');
При таком подходе, если переменная не определена, происходит тихая ошибка. Это заставляет меня вообще сомневаться в использовании двойных восклицаний. Есть ли ситуация, которая действительно делает этот оператор выгодным?