Kiểu chuyển đổi trong JavaScript - Fedu

CHÀO MỪNG BẠN ĐẾN VỚI THƯ VIỆN HỌC TẬP & ĐÀO TẠO CƠ BẢN

Kiểu chuyển đổi trong JavaScript

JavaScript

Hướng dẫn JavaScript

Biểu mẫu JavaScript

Đối tượng JavaScript

Hàm JavaScript

DOM JavaScript

Trình duyệt BOM

JavaScript Ajax

JavaScript Json

Number() chuyển thành một số, String() chuyển thành một chuỗi, Boolean() chuyển đổi sang một Boolean.

Các kiểu dữ liệu trong JavaScript

Trong JavaScript có 5 loại dữ liệu khác nhau có thể chứa các giá trị:

  • string
  • number
  • boolean
  • object
  • function

Có 3 kiểu đối tượng:

  • Object
  • Date
  • Array

Và 2 loại dữ liệu không chứa giá trị:

  • null
  • undefined

Toán tử typeof

Bạn có thể sử dụng toán tử typeof để tìm kiểu dữ liệu của một biến JavaScript.

typeof “John”                 // trả về “string”
typeof 3.14                   // trả về “number”
typeof NaN                    // trả về “number”
typeof false                  // trả về “boolean”
typeof [1,2,3,4]              // trả về “object”
typeof {name:’John’, age:34}  // trả về “object”
typeof new Date()             // trả về “object”
typeof function () {}         // trả về “function”
typeof myCar                  // trả về “undefined” *
typeof null                   // trả về “object”

Xem chi tiết dưới đây:

  • Kiểu dữ liệu của NaN là
  • Kiểu dữ liệu của mảng là đối tượng
  • Kiểu dữ liệu của ngày là đối tượng
  • Kiểu dữ liệu của của null là đối tượng
  • Kiểu dữ liệu của biến undefined là undefined *
  • Kiểu dữ liệu của biến mà không hỗ trợ giá trị cũng là undefined *

Bạn không thể sử dụng typeof để xác định xem một đối tượng JavaScript là một mảng (hay một ngày).

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

Toán tử typeof không phải là một biến. Nó là một toán tử. Toán tử (+ – * /) không có bất kỳ kiểu dữ liệu nào. Tuy nhiên, toán tử typeof luôn trả về một chuỗi (chứa kiểu toán hạng).

Hàm tạo thuộc tính

Thuộc tính constructor trả về hàm xây dựng cho tất cả các biến JavaScript.

“John”.constructor                // trả về hàm String()  {[native code]}
(3.14).constructor                // trả về hàm Number()  {[native code]}
false.constructor                 // trả về hàm Boolean() {[native code]}
[1,2,3,4].constructor             // trả về hàm Array()   {[native code]}
{name:’John’,age:34}.constructor  // trả về hàm Object()  {[native code]}
new Date().constructor            // trả về hàm Date()    {[native code]}
function () {}.constructor        // trả về hàm Function(){[native code]}

Bạn có thể kiểm tra các hàm tạo thuộc tính để tìm ra nếu một đối tượng là một mảng (có chứa từ “Array”):

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

Hoặc thậm chí đơn giản hơn, bạn có thể kiểm tra nếu đối tượng là một hàm Array:

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

Bạn có thể kiểm tra các hàm tạo thuộc tính để tìm ra nếu một đối tượng là một Date (có chứa từ “Date”):

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

Hoặc thậm chí đơn giản hơn, bạn có thể kiểm tra nếu đối tượng là một hàm Date:

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

Loại chuyển đổi trong JavaScript

Các biến JavaScript có thể được chuyển đổi sang một biến mới và một kiểu dữ liệu khác:

  • Bằng cách sử dụng một hàm JavaScript
  • Tự động bởi chính JavaScript

Chuyển đổi số sang chuỗi

Phương pháp toàn cục String() có thể chuyển đổi số thành chuỗi. Có thể được sử dụng cho bất kỳ loại số, literals, biến, hoặc biểu thức:

String(x)         // trả về một chuỗi với biến số x
String(123)       // trả về một chuỗi với số 123
String(100 + 23)  // trả về một chuỗi từ một số từ một biểu thức

Phương thức Number toString () không giống nhau.

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

Phương thức Mô tả
toExponential() Trả về một chuỗi, với một số làm tròn và viết bằng ký hiệu mũ
toFixed() Trả về một chuỗi, với một số làm tròn và viết với một số thập phân xác định
toPrecision() Trả về một chuỗi, với một số được viết với một độ dài xác định

Chuyển đổi các Booleans thành Strings

Phương thức toàn cục String() có thể chuyển đổi các phép toán luận thành dây.

String(false)        // trả về “false”
String(true)         // trả về “true”

Phương thức toString() cũng làm như vậy.

false.toString()     // trả về “false”
true.toString()      // trả về “true”

Chuyển đổi Dates sang Strings

Phương pháp toàn cục Chuỗi () có thể chuyển đổi ngày thành chuỗi.

String(Date())      // trả về “Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)”

Phương thức toString() cũng tương tự.

Date().toString()   // trả về “Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)”

Phương thức Mô tả
getDate() Lấy ngày làm số (1-31)
getDay() Nhận số ngày trong tuần (0-6)
getFullYear() Lấy năm chữ số bốn (yyyy)
getHours() Lấy giờ (0-23)
getMilliseconds() Lấy mili giây (0-999)
getMinutes() Lấy phút (0-59)
getMonth() Nhận tháng (0-11)
getSeconds() Nhận giây (0-59)
getTime() Nhận thời gian (mili giây kể từ ngày 1 tháng 1 năm 1970)

Chuyển chuỗi thành số

Phương pháp toàn cục Number() có thể chuyển đổi các chuỗi thành số. Chuỗi có chứa số (như “3.14”) chuyển thành số (như 3.14). Chuỗi trống chuyển thành 0. Mọi thứ khác chuyển thành NaN (Không phải là số).

Number(“3.14″)    // trả về 3.14
Number(” “)       // trả về 0
Number(“”)        // trả về 0
Number(“99 88”)   // trả về NaN

Phương thức Mô tả
parseFloat() Phân tích một chuỗi và trả về một số điểm nổi
parseInt() Phân tích một chuỗi và trả về một số nguyên

Unary + Operator

unary + operator có thể dùng để chuyển đổi một biến thành số.

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

Nếu biến không thể được chuyển đổi, nó vẫn sẽ trở thành một số, nhưng với giá trị NaN (Không phải là một số):

var y = “John”;   // y là chuỗi
var x = + y;      // x là một số (NaN)

Chuyển đổi Booleans sang dạng số

Phương pháp toàn cục Number() cũng có thể chuyển đổi các phép toán luận thành số.

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

Chuyển đổi Dates sang dạng số

Phương pháp toàn cục Number() có thể được sử dụng để chuyển ngày thành số.

d = new Date();
Number(d)          // trả về 1404568027739

Phương thức getTime()  cũng tương tự:

d = new Date();
d.getTime()        // trả về 1404568027739

Kiểu tự động chuyển đổi

Khi JavaScript cố gắng hoạt động trên một kiểu dữ liệu “sai”, nó sẽ cố gắng chuyển đổi giá trị sang một loại “đúng”. Kết quả không phải lúc nào bạn mong đợi:

5 + null    // trả về 5         vì null is chuyển đổi thành 0
“5” + null  // trả về “5null”   vì null is converted to “null”
“5” + 2     // trả về 52       vì 2 được đổi thành “2”
“5” – 2     // trả về 3         vì “5” được đổi thành 5
“5” * “2”   // trả về10       vì “5” và “2” được chuyển đổi thành 5 và 2

Tự động chuyển đổi chuỗi

JavaScript sẽ tự động gọi hàm toString() của biến khi bạn cố gắng “xuất” một đối tượng hoặc một biến:

document.getElementById(“demo”).innerHTML = myVar;

// if myVar = {name:”Fjohn”}  // toString chuyển thành “[object Object]”
// if myVar = [1,2,3,4]       // toString chuyển thành “1,2,3,4”
// if myVar = new Date()      // toString chuyển thành “Fri Jul 18 2014 09:08:55 GMT+0200”

Số và các phép toán luận cũng được chuyển đổi, nhưng điều này không phải là rất rõ ràng:

// if myVar = 123             // toString chuyển thành “123”
// if myVar = true            // toString chuyển thành “true”
// if myVar = false           // toString chuyển thành “false”

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

Bảng này cho thấy kết quả của việc chuyển đổi các giá trị JavaScript khác nhau thành Số, Chuỗi và Boolean:

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

Giá trị trong dấu ngoặc kép biểu thị các giá trị chuỗi. Các giá trị đỏ biểu thị giá trị (một số) lập trình có thể không mong đợi.