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