Двойное восклицание JS - есть ли веские основания для его использования?

Я обсуждаю эту тему с коллегой около недели. Я очень поклонником сокращенного кода, с помощью троичников и т.д., где я могу. В последнее время он спрашивал меня об использовании двойных возгласов. Проведя многочисленные тесты, я начинаю с ним соглашаться... двойные возгласы может быть не разумно использовать в моем коде. Рассмотрим следующее:

var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");

Приведенный выше пример работает так, как ожидалось. Однако если мы проверяем переменную, которая может возвращать неопределенное значение, мы получаем ошибку, особенно в IE7. Мы получаем наш ожидаемый результат, однако, если мы запускаем это в нашей консоли:

if(randomvar) alert('Works');

С помощью этого подхода, если переменная не определена, она безмолвно терпит неудачу. Это заставляет меня усомниться в использовании двойных возгласов вообще. Существует ли ситуация, которая на самом деле делает этот оператор полезным?

-121--1555572- Почему я получаю другое значение во время выполнения при приведении последовательности типа к DWORD? std:: cout < < (DWORD) «test»; Если я компилирую и выполняю это я получаю разные выходные значения каждый раз, но я не могу понять почему. Есть идеи? PS: Я использую 64-разрядную Windows 7 и компилирую с...
std::cout << (DWORD)"test";

Если я компилирую и выполняю это, я получаю разные выходные значения каждый раз, но я не могу понять, почему.

Какие-либо идеи?

PS: Я использую 64-разрядную Windows 7 и компилирую с Microsoft Visual C++ 2010 Ultimate.

5
задан Purebe 19 September 2011 в 20:15
поделиться