Kiểu dữ liệu String trong JavaScript
– Object String cho phép bạn làm việc với chuỗi ký tự, được sử dụng để lưu trữ và thao tác với chuỗi. Nó là sự kết hợp của kiểu dữ liệu nguyên thủy string (string primitive data type) với một số phương thức trợ giúp để giúp thao tác với chuỗi một cách thuận tiện, nhanh chóng.
– Vì JavaScript tự động chuyển đổi giữa các chuỗi nguyên thủy string và các đối tượng String, nên bạn có thể gọi bất kỳ phương thức trợ giúp nào của đối tượng String khi sử dụng chuỗi nguyên thủy string.
1. Chuỗi JavaScript
– Chuỗi JavaScript có thể là 0 hoặc nhiều ký tự được viết bên trong 1 trong 3 cặp dấu sau:
- Dấu nháy kép (Double quotes):
"Hello"
. - Dấu nháy đơn (Single quotes):
'Hello'
. - Backticks:
`Hello`
.
– Dấu nháy kép và dấu nháy đơn không có sự khác biệt giữa chúng trong JavaScript.
Ví dụ:
[code language=”javascript”]"Minh Hoàng Blog"‘Minh Hoàng Blog'[/code]
– Bạn có thể sử dụng chung dấu nháy kép và dấu nháy đơn trong một chuỗi miễn sao chúng khớp theo từng cặp với nhau:
Ví dụ:
[code language=”javascript”]var answer = "It’s alright!"; // Một dấu nháy đơn bên trong cặp dấu nháy képvar answer = "Tên tôi là ‘Minh’"; // Cặp dấu nháy đơn bên trong cặp dấu nháy kép
var answer = ‘Tên tôi là "Minh"’; // Cặp dấu nháy kép bên trong cặp dấu nháy đơn[/code] Try it »
– Backticks là dấu quotes “chức năng mở rộng” (“extended functionality”). Chúng cho phép chúng ta nhúng biến và biểu thức hoặc một cái gì đó phức tạp hơn vào một chuỗi bằng cách gói chúng trong ${...}
:
Ví dụ:
[code language=”javascript”] var name = "Minh Hoàng Blog!";// Nhúng một biến
alert( `Welcome to ${name}!` );
// Nhúng một biểu thức
alert( `Kết quả của 1 + 2 = ${1 + 2}` );[/code]
Try it »
– Lưu ý là điều này chỉ có thể được thực hiện trong cặp dấu backticks. Các trích dẫn (quotes) khác không cho phép nhúng như vậy. Có nghĩa là, nếu dùng dấu nháy kép hay dấu nháy đơn thì sẽ trả về nguyên chuỗi trong cặp dấu nháy.
Ví dụ:
[code language=”javascript”]var name = "Minh Hoàng Blog!";// Nhúng một biến
alert( ‘Welcome to ${name}!’ ); // return: Welcome to ${name}!
// Nhúng một biểu thức
alert( "Kết quả của 1 + 2 = ${1 + 2}" ); // return: Kết quả của 1 + 2 = ${1 + 2}[/code]
Try it »
– Bạn có thể lấy được độ dài của chuỗi bằng cách sử dụng thuộc tính có sẵn là length.
Ví dụ:
[code language=”javascript”]var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";var len = str.length;[/code] Try it »
JavaScript không có kiểu char (character), mà chỉ có 1 loại dữ liệu thao tác với chuỗi là string. Một string có thể có một hoặc nhiều ký tự.
2. Các ký tự đặc biệt
– Bởi vì các chuỗi phải được viết trong dấu ngoặc kép, do đó nếu viết như bên dưới JavaScript sẽ hiểu sai chuỗi này, chuỗi sẽ được cắt nhỏ thành “Welcome to”:
Ví dụ:
[code language=”javascript”]var x = "Welcome to "Minh Hoàng Blog!". Nice to meet you!";[/code]– Để tránh lỗi này, chúng ta sẽ sử dụng thêm dấu backslash (\) để biến các ký tự đặc biệt thành các ký tự chuỗi:
Cách viết | Kết quả | Mô tả |
\’ | ‘ | Một dấu nháy đơn |
\” | “ | Một dấu nháy kép |
\\ | \ | Một dấu Backslash |
Ví dụ:
[code language=”javascript”]var x = "Welcome to \"Minh Hoàng Blog!\". Nice to meet you!";var y = ‘It\’s alright.’;
var z = "The character \\ is called backslash.";[/code] Try it »
– Ngoài ra, trong JavaScript còn có 6 ký tự đặc biệt (escape sequences) sau:
Cách viết | Kết quả |
\b | Backspace |
\f | Form Feed |
\n | Xuống dòng mới |
\r | Carriage Return |
\t | 1 tab ngang |
\v | 1 tab dọc |
Các ký tự này không có ý nghĩa trong HTML.
3. Chuỗi string có thể là Object
– Thông thường các chuỗi JavaScript là các giá trị nguyên thủy và được tạo từ các literal:
var firstName = “Minh”;
– Tuy nhiên, các chuỗi cũng có thể được định nghĩa là các đối tượng (objects) với từ khóa new:
var firstName = new String(“Minh”);
Ví dụ:
[code language=”javascript”]var x = "Minh";var y = new String("Minh");
// typeof x sẽ trả về "string"
// typeof y sẽ trả về "object"[/code]
Try it »
– Đừng bao giờ tạo chuỗi (string) làm đối tượng (object). Nó làm chậm tốc độ thực thi.
– Hơn nữa, từ khóa new làm phức tạp code. Điều này có thể tạo ra một số kết quả không mong muốn như dưới đây:
● Khi sử dụng toán tử ==, các chuỗi bằng nhau sẽ bằng nhau (equal):
Ví dụ:
[code language=”javascript”]var x = "Minh";var y = new String("Minh");
// (x == y) là "true", vì x và y có giá trị bằng nhau.[/code] Try it »
● Khi sử dụng toán tử ===, các chuỗi bằng nhau không bằng nhau, vì toán tử === mong đợi sự bằng nhau trong cả kiểu (type) và giá trị (value).
Ví dụ:
[code language=”javascript”]var x = "Minh";var y = new String("Minh");
// (x === y) là "false", vì x và y là khác kiểu (string vs object)[/code] Try it »
● Hay thậm chí các đối tượng cũng không thể so sánh được.
Ví dụ:
[code language=”javascript”]var x = new String("Minh");var y = new String("Minh");
// (x == y) là "false", vì x và y là các đối tượng khác nhau.
// (x === y) là "false", vì x và y là các đối tượng khác nhau.[/code]
Try it »
Lưu ý sự khác biệt giữa (x == y) và (x === y).
So sánh hai đối tượng JavaScript sẽ luôn trả về “false”.
4. Cách convert kiểu dữ liệu khác sang kiểu chuỗi (string)
Các biến JavaScript có thể được chuyển đổi thành các kiểu dữ liệu mới và các kiểu dữ liệu khác nhau.
- Bằng cách sử dụng hàm JavaScript.
- Tự động bằng chính JavaScript.
4.1. Chuyển đổi một số (number) thành một chuỗi (string)
– Phương thức global String() có thể chuyển đổi một số thành một chuỗi.
– Nó có thể được sử dụng với bất kỳ loại số (numbers), literals, biến (variables) hoặc biểu thức (expressions) nào.
Ví dụ:
[code language=”javascript”]var x = 123;String(x) // return a string from a number variable x
String(123) // return a string from a number literal 123
String(100 + 23) // return a string from a number from an expression[/code] Try it »
– Phương thức toString() của dữ liệu kiểu số Number cũng làm được điều tương tự.
Ví dụ:
[code language=”javascript”]var x = 123;x.toString()
(123).toString()
(100 + 23).toString()[/code] Try it »
– Trong bài viết Thuộc tính và phương thức của đối tượng JavaScript Number, bạn sẽ tìm thấy nhiều phương thức có thể được sử dụng để chuyển đổi số thành chuỗi:
Tên phương thức | Mô tả |
toExponential() | Trả về một chuỗi được viết với số được làm tròn bằng cách sử dụng ký hiệu số mũ. |
toFixed() | Trả về một chuỗi ký tự được làm tròn ra dấu thập phân của số chữ số được chỉ định. |
toPrecision() | Trả về tổng số chữ số (bao gồm số chữ số ở bên trái và bên phải của dấu thập phân) với độ dài được chỉ định. |
4.2. Chuyển đổi kiểu boolean thành một chuỗi (string)
– Phương thức global String() có thể chuyển đổi một giá trị boolean thành một chuỗi.
Ví dụ:
[code language=”javascript”]String(false) // return "false"String(true) // return "true"[/code]
– Phương thức toString() của dữ liệu kiểu Boolean cũng làm được điều tương tự.
Ví dụ:
[code language=”javascript”]false.toString() // return "false"true.toString() // return "true"[/code]
4.3. Chuyển đổi kiểu ngày (date) thành một chuỗi (string)
– Phương thức global String() có thể chuyển đổi một giá trị ngày thành một chuỗi.
Ví dụ:
[code language=”javascript”]String(Date()) // return "Mon Sep 10 2018 23:42:32 GMT+0900 (Japan Standard Time)"[/code]– Phương thức toString() của dữ liệu kiểu Date cũng làm được điều tương tự.
Ví dụ:
[code language=”javascript”]Date().toString() // return "Mon Sep 10 2018 23:42:32 GMT+0900 (Japan Standard Time)"[/code]– Trong bài viết các phương thức lấy thông tin từ đối tượng Date, bạn sẽ tìm thấy nhiều phương thức có thể được sử dụng để chuyển đổi ngày thành chuỗi:
Tên phương thức | Mô tả |
getDate() | Lấy ngày trong tháng dưới dạng một số (1-31) |
getDay() | Lấy ngày trong tuần dưới dạng một số (0-6) |
getFullYear() | Lấy 4 chữ số của năm (yyyy) |
getHours() | Lấy số giờ (0-23) |
getMilliseconds() | Lấy số milliseconds (0-999) |
getMinutes() | Lấy số phút (0-59) |
getMonth() | Lấy số tháng (0-11) |
getSeconds() | Lấy số giây (0-59) |
getTime() | Lấy thời gian (milliseconds) tính từ ngày 01/01/1970 |
4.4. Chuyển đổi Object thành một chuỗi (string)
Ví dụ:
[code language=”javascript”]// Convert array to stringconsole.log ( String([3,4,5]) === "3,4,5" ); // true
// Convert object to string
console.log ( String({"k":4}) === "[object Object]" ); // true[/code]
Có thể bạn quan tâm: Thuộc tính và phương thức của đối tượng JavaScript String.
[…] – Tuy nhiên, đừng bao giờ tạo chuỗi (string) làm đối tượng (object). Nó làm chậm tốc độ thực thi và từ khóa new làm phức tạp code. – Chi tiết xem thêm: Chuỗi string có thể là Object. […]
[…] Xem chi tiết: Kiểu dữ liệu String trong JavaScript. […]