Это !! оператор даже необходим в Javascript? - PullRequest
3 голосов
/ 26 октября 2011

Я могу понять случаи, когда вы захотите преобразовать значение объекта в логическое значение и сохранить его в переменной.Тем не менее, я наткнулся на следующий код в шаблоне jQuery, и мне было интересно, если !!(операторы двойного восклицания) даже необходимы.

{{if !!sectionId}}
    // do something...
{{/if}}

Я предполагаю, что это не так, поскольку Javascript автоматически вычислит выражение после логического выражения if.Поэтому вы могли бы просто написать:

{{if sectionId}}
    // do something...
{{/if}}

Прав ли я в своем предположении?

1 Ответ

8 голосов
/ 26 октября 2011

В JavaScript нет оператора !!.Там просто !.То, что вы видите, - это удвоенное применение этого единственного оператора.

Одно приложение ! вернет логическое значение, оценивая «правдивость» своего аргумента, давая логическое значение, обратное этому.Второе значение !, следовательно, дает логическое обратное значение , равное , которое, таким образом, является логическим значением "истинность" исходного значения.

Лично я бы не использовал его в простом if, как в вашем примере, но это удобно для API, которые могут явно проверять параметр с логическим типом:

someAPI( !! someExpression );
...