Статьи

Логическое ()

Функция конструктора Boolean() может использоваться для создания логических объектов, а также логических примитивных значений, представляющих либо значение true либо false .

В следующем коде я подробно описываю создание логических значений в JavaScript.

Образец: sample52.html

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<!DOCTYPE html><html lang=»en»><body><script>
 
    // Create a Boolean object using the new keyword and the Boolean() constructor.
    var myBoolean1 = new Boolean(false);
    console.log(typeof myBoolean1);
 
    // Create a Boolean literal/primitive by directly using the number constructor without new.
    var myBoolean2 = Boolean(0);
    console.log(typeof myBoolean2);
 
    // Create Boolean literal/primitive (constructor leveraged behind the scenes).
    var myBoolean3 = false;
    console.log(typeof myBoolean3);
    console.log(myBoolean1, myBoolean2, myBoolean3);
 
</script></body></html>

Функция конструктора Boolean() принимает один параметр для преобразования в логическое значение (т. Е. true или false ). Любое допустимое значение JavaScript, отличное от 0, -0, null , false , NaN , undefined или пустая строка («»), будет преобразовано в true . В следующем примере мы создаем два значения логических объектов: одно true и одно false .

Образец: sample53.html

01
02
03
04
05
06
07
08
09
10
11
<!DOCTYPE html><html lang=»en»><body><script>
 
    // Parameter passed to Boolean() = 0 = false, thus foo = false
    var foo = new Boolean(0)
    console.log(foo);
 
    // Parameter passed to Boolean() = Math = true, thus bar = true
    var bar = new Boolean(Math)
    console.log(bar);
 
</script></body></html>

При использовании с new ключевым словом экземпляры из конструктора Boolean() создают фактический сложный объект. Вам следует избегать создания логических значений с помощью конструктора Boolean () (вместо этого используйте литеральные / примитивные числа) из-за потенциальных проблем, связанных с оператором typeof . Оператор typeof сообщает о булевых объектах как об объекте, а не о примитивной метке (булево), которую вы можете ожидать. Кроме того, буквальное / примитивное значение быстрее записывается.


Объект Boolean() имеет следующие свойства:

Свойства (например, Boolean.prototype; ):


Экземпляры логических объектов имеют следующие свойства и методы (не включая унаследованные свойства и методы):

Свойства экземпляра (например, var myBoolean = false; myBoolean.constructor; ):

Методы экземпляра (например, var myNumber = false; myBoolean.toString(); ):


false логический объект (в отличие от примитивного значения), созданный из конструктора Boolean() является объектом, и объекты преобразуются в true . Таким образом, при создании false логического объекта с помощью конструктора Boolean() само значение преобразуется в true . В следующем примере я демонстрирую, как false логический объект всегда «правдив».

Образец: sample54.html

01
02
03
04
05
06
07
08
09
10
11
<!DOCTYPE html><html lang=»en»><body><script>
 
    var falseValue = new Boolean(false);
 
    console.log(falseValue);
 
    if (falseValue) { // Boolean objects, even false Boolean objects, are truthy.
        console.log(‘falseValue is truthy’);
    }
 
</script></body></html>

Если вам нужно преобразовать не логическое значение в логическое, просто используйте конструктор Boolean() без ключевого слова new и возвращаемое значение будет примитивным значением вместо логического объекта.


Это уже упоминалось, но стоит упомянуть еще раз, поскольку оно относится к преобразованиям: если значение равно 0, -0, null , false , NaN , undefined или пустая строка («»), это false . Любое значение в JavaScript, кроме вышеупомянутых значений, будет преобразовано в true если используется в логическом контексте (то есть, if (true) {}; ).

Образец: sample55.html

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<!DOCTYPE html><html lang=»en»><body><script>
 
    // All of these return a false Boolean value.
    console.log(Boolean(0));
    console.log(Boolean(-0));
    console.log(Boolean(null));
    console.log(Boolean(false));
    console.log(Boolean(»));
    console.log(Boolean(undefined));
    console.log(Boolean(null));
 
    // All of these return a true Boolean value.
    console.log(Boolean(1789));
    console.log(Boolean(‘false’));
    console.log(Boolean(Math));
    console.log(Boolean(Array()));
 
</script></body></html>

Очень важно, чтобы вы понимали, какие значения JavaScript сведены к false поэтому вы знаете, что все остальные значения считаются true .