Chuyển đổi loại JavaScript

Number() Chuyển đổi số,String() Chuyển đổi chuỗi,Boolean() Chuyển đổi giá trị Boole.

Kiểu dữ liệu của JavaScript

JavaScript có năm loại dữ liệu có thể chứa giá trị:

  • Chuỗi (string)
  • Số (number)
  • Boole (boolean)
  • Đối tượng (object)
  • Hàm (function)

Có ba loại đối tượng:

  • Đối tượng (Object)
  • Ngày (Date)
  • Mảng (Array)

Có hai loại dữ liệu không thể chứa giá trị:

  • null
  • undefined

toán tử typeof

Bạn có thể sử dụng typeof Sử dụng toán tử để xác định loại dữ liệu của biến JavaScript.

ví dụ

typeof "Bill"                 // Trả về "chuỗi"
typeof 3.14                   // Trả về "số"
typeof NaN                    // Trả về "số"
typeof false                  // Trả về "boolean"
typeof [1,2,3,4]              // Trả về "object"
typeof {name:'Bill', age:62}  // Trả về "object"
typeof new Date()             // Trả về "object"
typeof function () {}         // Trả về "function"
typeof myCar                  // Trả về "undefined" *
typeof null                   // Trả về "object"

Hãy thử ngay

Lưu ý rằng:

  • Loại dữ liệu của NaN là số
  • Loại dữ liệu của mảng là đối tượng
  • Loại dữ liệu của ngày tháng là đối tượng
  • Loại dữ liệu của null là đối tượng
  • Loại dữ liệu của biến không được định nghĩa là undefined
  • Loại dữ liệu của biến chưa được gán giá trị cũng là undefined

Bạn không thể sử dụng typeof để kiểm tra đối tượng JavaScript có phải là mảng (hoặc ngày tháng) hay không.

Loại dữ liệu của toán tử typeof

typeof Toán tử không phải là biến. Nó thuộc về toán tử. Toán tử (ví dụ + - * /)không có loại dữ liệu.

Nhưng,typeof Luôn luônTrả về chuỗi(bao gồm loại của toán tử).

Thuộc tính constructor

constructor Thuộc tính trả về hàm构造器 của tất cả các biến JavaScript.

ví dụ

"Bill".constructor                 // Trả về "function String()  { [native code] }"
(3.14).constructor                 // Trả về "function Number()  { [native code] }"
false.constructor                  // Trả về "function Boolean() { [native code] }"
[1,2,3,4].constructor              // Trả về "function Array()   { [native code] }"
{name:'Bill', age:62}.constructor  // Trả về "function Object()  { [native code] }"
new Date().constructor             // Trả về "function Date()    { [native code] }"
function () {}.constructor         // Trả về "function Function(){ [native code] }"

Hãy thử ngay

Bạn có thể kiểm tra constructor Thuộc tính để xác định đối tượng có phải là mảng (chứa từ "Array"):

ví dụ

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

Hãy thử ngay

Hoặc đơn giản hơn, bạn có thể kiểm tra đối tượng có phải là hàm mảng không:

ví dụ

function isArray(myArray) {
    return myArray.constructor === Array;
}

Hãy thử ngay

Bạn có thể kiểm tra constructor Thuộc tính để xác định đối tượng có phải là ngày tháng (chứa từ "Date"):

ví dụ

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

Hãy thử ngay

Hoặc đơn giản hơn, bạn có thể kiểm tra đối tượng có phải là hàm ngày tháng không:

ví dụ

function isDate(myDate) {
    return myDate.constructor === Date;
}

Hãy thử ngay

Chuyển đổi loại JavaScript

Biến JavaScript có thể được chuyển đổi thành biến mới và loại dữ liệu khác:

  • Bằng cách sử dụng hàm JavaScript
  • Bằng cách sử dụng JavaScript bản thânTự độngChuyển đổi

Chuyển đổi số thành chuỗi

Phương thức toàn cục String() Có thể chuyển đổi số thành chuỗi.

Nó có thể được sử dụng cho bất kỳ loại số, văn bản, biến hoặc biểu thức nào:

ví dụ

String(x)         // Trả về chuỗi từ biến số x
String(123)       // Trả về chuỗi từ văn bản số 123
String(100 + 23)  // Trả về chuỗi từ giá trị số trong biểu thức

Hãy thử ngay

phương pháp số toString() Cùng vậy.

ví dụ

x.toString()
(123).toString()
(100 + 23).toString()

Hãy thử ngay

trongphương pháp sốTrong chương này, bạn sẽ học thêm về các phương pháp có thể sử dụng để chuyển đổi số liệu thành chuỗi:

phương pháp mô tả
toExponential() Trả về chuỗi, làm tròn số và viết dưới dạng số thập phân với hệ số nhân.
toFixed() Trả về chuỗi, làm tròn số và viết dưới dạng số thập phân với số chữ số được chỉ định.
toPrecision() Trả về chuỗi, viết số dưới dạng độ dài được chỉ định.

Chuyển đổi boolean thành chuỗi

Phương thức toàn cục String() Có thể chuyển đổi boolean thành chuỗi.

String(false)        // trả về "false"
String(true)         // trả về "true"

phương pháp boolean toString() Cùng vậy.

false.toString()     // trả về "false"
true.toString()      // trả về "true"

Chuyển đổi ngày thành chuỗi

Phương thức toàn cục String() Có thể chuyển đổi ngày thành chuỗi.

String(Date())      

Phương thức ngày tháng toString() Cùng vậy.

ví dụ

Date().toString()   

trongPhương thức ngày thángTrong chương này, bạn sẽ tìm thấy nhiều phương pháp khác nhau để chuyển đổi ngày thành chuỗi:

phương pháp mô tả
getDate() Lấy ngày theo giá trị số (1-31)
getDay() hoặc theo giá trị số (0-6) của tuần
getFullYear() Lấy năm bốn chữ số (yyyy)
getHours() Lấy giờ (0-23)
getMilliseconds() Lấy miliseconds (0-999)
getMinutes() Lấy phút (0-59)
getMonth() Lấy tháng (0-11)
getSeconds() Lấy giây (0-59)
getTime() Lấy thời gian (miliseconds từ ngày 1 tháng 1 năm 1970)

Chuyển đổi chuỗi thành số trị

Phương thức toàn cục Number() Có thể chuyển đổi chuỗi thành số.

chuỗi chứa số (ví dụ "3.14") sẽ chuyển đổi thành số (ví dụ 3.14).

chuỗi trống sẽ chuyển đổi thành 0。

Các chuỗi khác sẽ được chuyển đổi thành NaN(Not a number,không phải số)。

Number("3.14")    // trả về 3.14
Number(" ")       // trả về 0
Number("")        // trả về 0
Number("99 88")   // trả về NaN

trongphương pháp sốTrong chương này, bạn sẽ tìm thấy nhiều phương pháp khác nhau để chuyển đổi chuỗi thành số:

phương pháp mô tả
parseFloat() giải thích chuỗi và trả về số thập phân.
parseInt() giải thích chuỗi và trả về số nguyên.

toán tử một ngôi +

một ngôi + toán tửCó thể sử dụng để chuyển đổi biến thành số:

ví dụ

var y = "5";      // y là chuỗi
var x = + y;      // x là số

Hãy thử ngay

Nếu không thể chuyển đổi biến, nó vẫn sẽ là số nhưng giá trị của nó là NaN(Not a number):

ví dụ

var y = "Bill";   // y là chuỗi
var x = + y;      // x là số (NaN)

Hãy thử ngay

Chuyển đổi boolean thành số

Phương thức toàn cục Number() Cũng có thể chuyển đổi boolean thành số.

Number(false)     // Trả về 0
Number(true)      // Trả về 1

Chuyển đổi ngày tháng thành số

Phương thức toàn cục Number() Dùng để chuyển đổi ngày tháng thành số.

d = new Date();
Number(d)          

Phương thức ngày tháng getTime() Cùng vậy.

d = new Date();
d.getTime()        

Chuyển đổi loại dữ liệu tự động

Nếu JavaScript cố gắng thao tác với một loại dữ liệu "sai", nó sẽ cố gắng chuyển đổi giá trị đó thành loại dữ liệu "đúng".

Kết quả không luôn là điều bạn mong đợi:

5 + null    // Trả về 5         vì null được chuyển đổi thành 0
"5" + null  // Trả về "5null"   vì null được chuyển đổi thành "null"
"5" + 2     // Trả về 52        vì 2 được chuyển đổi thành "2"
"5" - 2     // Trả về 3         vì "5" được chuyển đổi thành 5
"5" * "2"   // Trả về 10        vì "5" và "2" được chuyển đổi thành 5 và 2

Hãy thử ngay

Chuyển đổi chuỗi tự động

JavaScript tự động gọi biến toString() Hàm, khi bạn cố gắng "xuất ra" đối tượng hoặc biến:

document.getElementById("demo").innerHTML = myVar;
// Nếu myVar = {name:"Fjohn"}  // toString chuyển đổi thành "[object Object]"
// Nếu myVar = [1,2,3,4]       // toString chuyển đổi thành "1,2,3,4"
// Nếu myVar = new Date()      // toString chuyển đổi thành ""

Số và boolean cũng sẽ được chuyển đổi, nhưng không rõ ràng:

// Nếu myVar = 123             // toString chuyển đổi thành "123"
// Nếu myVar = true            // toString chuyển đổi thành "true"
// Nếu myVar = false           // toString chuyển đổi thành "false"

Bảng chuyển đổi loại JavaScript

Bảng dưới đây liệt kê kết quả chuyển đổi các giá trị JavaScript khác nhau thành số, chuỗi và boolean:

Giá trị gốc Chuyển đổi thành số Chuyển đổi thành chuỗi Chuyển đổi thành logic Thử thử
false 0 "false" false Thử thử
true 1 "true" true Thử thử
0 0 "0" false Thử thử
1 1 "1" true Thử thử
"0" 0 "0" true Thử thử
"000" 0 "000" true Thử thử
"1" 1 "1" true Thử thử
NaN NaN "NaN" false Thử thử
Infinity Infinity "Infinity" true Thử thử
-Infinity -Infinity "-Infinity" true Thử thử
"" 0 "" false Thử thử
"20" 20 "20" true Thử thử
"twenty" NaN "twenty" true Thử thử
[ ] 0 "" true Thử thử
[20] 20 "20" true Thử thử
[10,20] NaN "10,20" true Thử thử
["twenty"] NaN "twenty" true Thử thử
["ten","twenty"] NaN "ten,twenty" true Thử thử
function(){} NaN "function(){}" true Thử thử
{ } NaN "[object Object]" true Thử thử
null 0 "null" false Thử thử
undefined NaN "undefined" false Thử thử

Giá trị trong dấu ngoặc kép chỉ ra giá trị chuỗi.

Giá trị màu đỏChỉ ra giá trị mà một số lập trình viên có thể không mong muốn.