Chuyển đổi kiểu

Chuyển đổi kiểu

Javascript là ngôn ngữ kiểu động (dynamically typed) và kiểu yếu (weak typed). Tức là khi khai báo biến thì không cần khai báo kiểu dữ liệu cho nó (kiểu động). Và biến có thể tự động chuyển đổi kiểu dữ liệu khi cần thiết (kiểu yếu).

Một biến có thể thay đổi kiểu dữ liệu của nó.

1
2
var answer = 43;
answer = 'Câu trả lời là 43';

Với toán tử + giữa kiểu số và kiểu String Javascript sẽ chuyển đổi số thành String.

1
var x = 'Câu trả lời là ' + 42 // "Câu trả lời là 42"

Tuy nhiên với các phép toán khác (là trừ, nhân, chia, lấy phần dư) thì Javascript lại chuyển đổi các String thành số.

1
2
var x = '3' - 1 // 2
var y = '3' * 2 // 6

Khi muốn chuyển đổi String thành Number

Dùng 2 hàm parseInt(number, radix), parseFloat(). Một cách khác là dùng toán tử +

1
2
3
var a = parseInt('3', 10) + 2; // 5
var b = (+'10') + (+'1'); // 11
var c = Number("10"); // dùng hàm tạo Number

Chuyển kiểu Number về String

Sử dụng hàm toString() hoặc sử dụng toán tử + với một string rỗng:

1
2
3
var a = (0.1).toString(); // '0.1'
var b = 2 + ''; // '2'
var c = String(10);  // '10'

Chuyển đổi kiểu về dạng Boolean

Sử dụng toán tử NOT hai lần để chuyển về dạng Boolean. Các giá trị 0, -0, null, false, NaN, undefined và string rỗng "" sẽ được chuyển thành false.

Các giá trị khác đều chuyển thành true, ví dụ mảng rỗng [], object rỗng {}

1
2
3
4
5
var a = 10;
var b = !! a; // true
var c = Boolean(10); // true
var d = Boolean(false); // false
var e = !!(new Boolean(false)); // true vì là đối tượng Boolean

Các giá trị trong if hoặc while là giá trị Boolean, hoặc giá trị này sẽ chuyển thành Boolean.

1
2
3
4
var a = new Boolean(false);
if (a) { // chuyển a sang boolean <=> a thành true
  console.log('a is true'); // đoạn code này sẽ chạy
}