Что !! (не нет) оператор в JavaScript? - PullRequest
2723 голосов
/ 24 апреля 2009

Я видел некоторый код, который, кажется, использует незнакомый оператор в виде двух восклицательных знаков, например: !!. Может кто-нибудь сказать, пожалуйста, что делает этот оператор?

Контекст, в котором я видел это, был

this.vertical = vertical !== undefined ? !!vertical : this.vertical;

Ответы [ 35 ]

2 голосов
/ 15 июля 2016

Дважды используйте логический оператор not
это значит! True = false
и !! true = true

2 голосов
/ 28 июня 2014
a = 1;
alert(!a) // -> false : a is not not defined
alert(!!a) // -> true : a is not not defined

Для !a проверяется, определено ли a НЕ , а !!a проверяет, определена ли переменная.

!!a совпадает с !(!a). Если определено a, a равно true, !a равно false и !!a равно true.

0 голосов
/ 06 февраля 2019

Double ! вычисляет переменную до ее логического значения. Например: ложь 0 (ноль), '' или "" (пустая строка), ноль, неопределено, NaN оценивается как ложное. Посмотреть это сообщение https://www.sitepoint.com/javascript-truthy-falsy/

0 голосов

Иногда необходимо проверить, есть ли у нас значение в функции или нет, и сама сумма не важна для нас, но имеет ли это значение. например, мы хотим проверить, есть ли у пользователя мажор или нет, и у нас есть такая функция:

hasMajor(){return this.major}//it return "(users major is)Science" 

но ответ не важен для нас, мы просто хотим проверить, имеет ли он мажор или нет, и нам нужно логическое значение (true или false), как мы его получаем:

просто так:

hasMajor(){ return !(!this.major)}

или как тот же

hasMajor(){return !!this.major)}

если this.major имеет значение, то !this.major возвращает false, но поскольку значение имеет выход, и мы должны вернуть true, мы используем! дважды, чтобы вернуть правильный ответ !(!this.major)

0 голосов
/ 24 апреля 2012

Это действительно удобный способ проверить наличие неопределенных, «неопределенных», нулевых, «нулевых», «»

if (!!var1 && !!var2 && !!var3 && !!var4 ){
   //... some code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...