Hướng dẫn sử dụng ECMAScript Boolean

Xem thêm các chuyên mục:

1- ECMAScript Boolean

Boolean là kiểu dữ liệu đơn giản nhất trong ECMAScript nó chỉ có 2 giá trị nguyên thủy (primitive) là truefalse.

Boolean-primitive

Dưới đây là cú pháp nguyên thủy (Primitive), cú pháp đơn giản nhất để bạn tạo ra một biến với kiểu kiểu dữ liệu là Boolean:
boolean-primitive-example.js
let a = true;
let b = false;

console.log( a ); // true
console.log( b ); // false
Boolean Common Pool là một bể chứa, nó chỉ có 2 giá trị true, false. Khi bạn tạo ra một biến theo cú pháp nguyên thủy, nó sẽ trỏ tới địa chỉ của true hoặc false trong bể chứa.
Toán tử === được sử dụng để so sánh 2 địa chỉ mà 2 biến đang trỏ đến.

Boolean-object:

Bạn cũng có thể tạo ra một đối tượng Boolean thông qua constructor của lớp Boolean. Về bản chất bạn sẽ tạo ra một đối tượng bao lấy (wrap) một giá trị nguyên thủy true hoặc false.
var myObj = new Boolean(value);
Tham số:
  • value: Nếu tham số này có giá trị false, 0, "", null, undefined, NaN, Number.Infinite nó sẽ tạo ra đối tượng Boolean {false}. Các trường hợp khác nó sẽ tạo ra đối tượng 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]
 
Mỗi lần bạn sử dụng toán tử new, một đối tượng mới sẽ được tạo ra trên bộ nhớ Heap. Vì vậy việc tạo một đối tượng Boolean thông qua toán tử new sẽ tốn nhiều chi phí hơn để lưu trữ chúng.
Khi bạn gán giá trị mới cho biến bb là biến aa. Biến bb sẽ trỏ tới địa chỉ trên bộ nhớ nơi mà biến aa đang trỏ tới, sẽ không có một thực thể nào được tạo ra trên bộ nhớ trong trường hợp này.

typeof

Toán tử typeof giúp bạn kiểm tra kiểu của một biến. Nó trả về chuỗi "object" nếu biến là một Boolean object, và trả về chuỗi "boolean" nếu biến là một Boolean primitive.
typeof-example.js
let a = new Boolean(true);
console.log( typeof a); // object

let b = false;
console.log( typeof b); // boolean

Method: Boolean(..)

Hàm Boolean(value) giúp bạn chuyển đổi một cái gì đó bất kỳ thành một giá trị nguyên thủy true hoặc false.
  • value: Nếu tham số này có giá trị false, 0, "", null, undefined, NaN, Number.Infinite, hàm này sẽ trả về false. Các trường hợp khác hàm này sẽ trả về 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- So sánh các Boolean

Toán tử === được sử dụng để so sánh địa chỉ trỏ đến của 2 biến.
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
Toán tử == được sử dụng để so sánh giá trị của 2 biến. Nó làm việc hoàn hảo đối với các kiểu dữ liệu nguyên thủy (Primitive) như Boolean (primitive), Number (primitive), String (Literal), null, undefined, NaN. Nhưng nó có thể hoạt động không giống như cách bạn đang nghĩ đối với các kiểu dữ liệu Object. Kiểu dữ liệu Boolean trong ECMAScript có thể là Primitive hoặc có thể là Object, vì vậy bạn cần cẩn thận khi sử dụng toán tử này.
Ví dụ: Toán tử == hoạt động hoàn hảo khi so sánh các Boolean primitive:
comparing-example2.js
let a = true;
let b = true;
let c = false;

console.log( a == b); // true
console.log( a == c); // false
Ví dụ: Toán tử == hoạt động không như cách bạn đang nghĩ khi so sánh 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
Nếu bạn không chắc chắn biến của bạn là Boolean object hay Boolean primitive, bạn nên sử dụng hàm Boolean() để chuyển đổi nó thành Boolean primitive trước khi sử dụng toán tử ==.
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
Ví dụ: Sử dụng toán tử == để so sánh giá trị của một Boolean primitive với giá trị của một 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- Các phương thức

Kiểu dữ liệu Boolean có một vài phương thức:
  • toString()
  • valueOf()

toString()

Phương thức này trả về một chuỗi "true" hoặc "false" tùy thuộc vào giá trị của đối tượng.
toString-example.js
let a =  true;

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

let b = new Boolean(false);

console.log( b.toString() ); // false

valueOf()

Phương thức này trả về giá trị nguyên thủy (primitive) của đối tượng Boolean hiện tại.
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

Xem thêm các chuyên mục: