betacode

Руководство JavaScript Boolean

  1. ECMAScript Boolean
  2. Сравнение Boolean
  3. Методы

1. ECMAScript Boolean

Boolean это самый простой вид данных в ECMAScript. Он имеет только 2 примитивных значений (primitive) это true и false.
Boolean-primitive
Ниже является примитвный синтаксис (Primitive), самый простой синтаксис для создания переменной с видом данных Boolean:
boolean-primitive-example.js
let a = true;
let b = false;

console.log( a ); // true
console.log( b ); // false
Boolean Common Pool это пул, имеющий только 2 значения true, false. Когда вы создаете переменную по примитивному синтаксису, он укажет на адрес принадлежащий true или false в пуле.
Оператор === используется для сравнения 2 адресов, к которым указывают 2 переменных.
Boolean-object:
Вы так же можете создать объект Boolean через constructor класса Boolean. В целом, вы создадите объект обернувший (wrap) примитивное значение true или false.
var myObj = new Boolean(value);
Параметр:
  • value: Если данный параметр имеет значение false, 0, "", null, undefined, NaN, Number.Infinite он создает объект Boolean {false}. В других случаях он создаст объект Boolean {true}.
boolean-object-example.js
console.log( new Boolean(false) );           // [Boolean: false]
console.log( new Boolean("") );              // [Boolean: false]
console.log( new Boolean(null) );            // [Boolean: false]
console.log( new Boolean() );                // [Boolean: false]
console.log( new Boolean(undefined) );       // [Boolean: false]
console.log( new Boolean(0) );               // [Boolean: false]
console.log( new Boolean(NaN) );             // [Boolean: false]
console.log( new Boolean(Number.Infinite) ); // [Boolean: false]
console.log( new Boolean(-Number.Infinite) );// [Boolean: false]

console.log(" ------------------- ");
console.log( new Boolean("0") );       // [Boolean: true]
console.log( new Boolean("false") );   // [Boolean: true]
console.log( new Boolean(1) );         // [Boolean: true]
console.log( new Boolean(100) );       // [Boolean: true]
console.log( new Boolean( {} ) );      // [Boolean: true]
Каждый раз, когда вы используете оператор new, новый объект создается в памяти Heap. Поэтому создание объекта Boolean через оператор new потребует больше затрат для хранения.
Когда вы прикрепляете новое значение переменной bb это переменную aa. Переменная bb укажет на адрес в памяти, куда указывает переменная aa, ни один объект не будет создан в памяти в данном случае.
typeof
Оператор typeof помогает вам проверить вид переменной. Он возвращает строку "object" если переменная является Boolean object, и возвращает строку "boolean" если переменная является Boolean primitive.
typeof-example.js
let a = new Boolean(true);
console.log( typeof a); // object

let b = false;
console.log( typeof b); // boolean
Boolean(..) Method
Фукнция Boolean(value) помогает вам конвертировать что-то в примитивное значение true или false.
  • value: Если данный параметр имеет значение false, 0, "", null, undefined, NaN, Number.Infinite, данная фукнция возвращает false. В других случаях данная функция возвращает true.
Boolean-function-example.js
console.log( Boolean(false) );           // false
console.log( Boolean("") );              // false
console.log( Boolean(null) );            // false
console.log( Boolean() );                // false
console.log( Boolean(undefined) );       // false
console.log( Boolean(0) );               // false
console.log( Boolean(NaN) );             // false
console.log( Boolean(Number.Infinite) ); // false
console.log( Boolean(-Number.Infinite) );// false

console.log(" ------------------- ");
console.log( Boolean("0") );       // true
console.log( Boolean("false") );   // true
console.log( Boolean(1) );         // true
console.log( Boolean(100) );       // true
console.log( Boolean( {} ) );      // true

2. Сравнение Boolean

Оператор === используется для сравнения адресов, на которые указывают 2 переменные.
comparing-example.js
var a = new Boolean(true);
var b = new Boolean(true);

var c = false; // Stored in Common Pool.
var d = false; // Stored in Common Pool.

console.log( a === b); // false

console.log( c === d); // true

console.log( a === c); // false
Оператор == используется для сравнения значений 2-х переменных. Он идеально работает для примитивного вида данных (Primitive), как Boolean (primitive), Number (primitive), String (Literal), null, undefined, NaN. Но он не может работать как вы думаете по отношению к видам данных Object. Вид данных Boolean в ECMAScript может быть Primitive или может быть Object, поэтому вам нужно быть осторожным при использовании данного оператора.
Например: Оператор == работает идеально при сравнении Boolean primitive:
comparing-example2.js
let a = true;
let b = true;
let c = false;

console.log( a == b); // true
console.log( a == c); // false
Например: Оператор == работает не как вы предполагаете при сравнении 2 Boolean object:
comparing-example3.js
let a = new Boolean(true);
let b = new Boolean(true);
let c = new Boolean(false);

// Are you expecting true value?
console.log( a == b); // false

console.log( a == c); // false
Если вы не уверены ваша переменная является Boolean object или Boolean primitive, вам стоит использовать функцию Boolean() для конвертирования в Boolean primitive перед тем, как использовать оператор ==.
comparing-example3b.js
let a = new Boolean(true);
let b = new Boolean(true);
let c = new Boolean(false)

console.log( a == b); // false

// Use Boolean() function to convert Boolean-object to Boolean-primitive
console.log( Boolean(a) == Boolean(b) ); // true

console.log( a == c); // false
Например: Использование оператора == для сравнения значения Boolean primitive со значением Boolean object:
comparing-example4.js
let a = true;
let b = new Boolean(true);

let c = new Boolean(false);

console.log( a == b); // true
console.log( a == c); // false

3. Методы

Вид данных Boolean имеет некоторые методы:
  • toString()
  • valueOf()
toString()
Данный метод возвращает строку "true" или "false" в зависимости от значения объекта.
toString-example.js
let a =  true;

console.log( a.toString() ); // true

let b = new Boolean(false);

console.log( b.toString() ); // false
valueOf()
Данный метод возвращает примитивное значение (primitive) настоящего объекта Boolean.
valueOf-example.js
let a = new Boolean(true);
console.log( a ); // [Boolean: true]
console.log( typeof a ); // object


let a2 = a.valueOf();
console.log( a2 );  // true
console.log( typeof a2 ); // boolean

Pуководства ECMAScript, Javascript

Show More