Hướng dẫn sử dụng ECMAScript Boolean
Xem thêm các chuyên mục:
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à true và false.
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
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
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