Tập hợp ký tự bất kỳ – chữ cái, số, ký hiệu, v.v. giữa tập hợp
dấu ngoặc kép ("
), dấu ngoặc đơn ('
) hoặc dấu phẩy ngược
(`) là một chuỗi nguyên gốc. Bạn đã xem một vài ví dụ về chuỗi trong
khoá học này: các bản sao của console.log
trong học phần trước có chứa
dữ liệu gốc của chuỗi.
console.log( "Hello, World." );
> Hello, World.
"Hello, World."
là một chuỗi nguyên gốc. Bạn sẽ nhận được kết quả tương tự với dấu ngoặc kép đơn hoặc dấu ngã:
console.log( 'Hello, World.' );
> Hello, World.
console.log(`Hello, World.`);
> Hello, World.
Một chuỗi ký tự nằm trong dấu ngoặc kép được gọi là giá trị cố định kiểu chuỗi. Dấu nháy kép và dấu nháy đơn hoạt động theo cách giống nhau, và một dấu nháy có thể chứa dấu ngoặc kép dưới dạng một ký tự trong chính chuỗi đó:
console.log( "I'm a string." );
> I'm a string.
console.log( '"A string," I said.' );
> "A string," I said.
Một thực thể của cùng ký tự bao quanh trong chuỗi "closes" thời gian có thể gây ra lỗi:
console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list
Để tránh điều này, hãy thoát ký tự đó bằng cách sử dụng dấu gạch chéo ngược (/):
console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.
Đối tượng chuỗi
Khi được gọi dưới dạng một hàm, đối tượng String
sẽ ép buộc một giá trị đã chỉ định thành một
cố định kiểu chuỗi.
let myString = String( 10 );
myString
> "10"
typeof myString
> string
Như đã nêu chi tiết trong phần tính kế thừa nguyên mẫu,
bạn hiếm khi cần dùng đối tượng String
làm hàm khởi tạo. Chiến dịch này tạo ra
đối tượng chuỗi chứa giá trị được chỉ định, cùng với các phương thức và
các thuộc tính mà đối tượng String
cung cấp, thay vì giá trị cố định kiểu chuỗi.
let stringObj = new String( "My new string." );
typeof stringObj
> object
stringObj
> String { "My new string." }
Nối
Khi được sử dụng trong ngữ cảnh chuỗi thay vì số, một dấu cộng (+
)
đóng vai trò là toán tử nối, kết hợp nhiều giá trị chuỗi thành một
chuỗi:
console.log( "My" + " string." );
> My string.
Hằng chuỗi và giá trị cố định mẫu
Bạn có thể sử dụng dấu ngoặc đơn, dấu ngoặc kép và dấu ngã thay thế cho nhau để tạo các chuỗi gốc. Tuy nhiên, bạn cũng có thể sử dụng dấu nháy đơn để chỉ định mã cố định mẫu (đôi khi được gọi là "chuỗi mẫu"). Không giống như giá trị cố định kiểu chuỗi được tạo bằng dấu nháy đơn hoặc dấu ngoặc kép, giá trị cố định trong mẫu cho phép cho các chuỗi nhiều dòng và nội suy chuỗi.
const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break
const myString = `This
is a string.`;
console.log( myString );
> This
is a string.
Hằng số mẫu có thể chứa biểu thức phần giữ chỗ được đánh dấu bằng dấu đô la và dấu ngoặc nhọn (${}
). Theo mặc định, các phần giữ chỗ này được "lồng ghép", nghĩa là kết quả của biểu thức sẽ thay thế phần giữ chỗ trong chuỗi cuối cùng.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
Hằng mẫu có thể được truyền đến một hàm tuỳ chỉnh để tạo mẫu được gắn thẻ, lệnh gọi hàm sử dụng một mẫu duy nhất cố định dưới dạng một tập hợp các đối số và cho phép phần giữ chỗ của nó điền sẵn dựa trên logic do tác giả xác định.
Đối số đầu tiên của hàm thẻ chứa một mảng các giá trị chuỗi và đối số còn lại xác định phần giữ chỗ. Mảng giá trị chuỗi này là được tạo bằng cách "chia tách" giá trị cố định của mẫu tại mỗi phần giữ chỗ có trong mẫu. Chiến lược phát hành đĩa đơn phần tử đầu tiên trong mảng chứa bất kỳ ký tự nào cho đến phần giữ chỗ đầu tiên, phần tử thứ hai chứa bất kỳ ký tự nào giữa phần tử đầu tiên và phần tử thứ hai phần giữ chỗ, v.v. Mỗi phần giữ chỗ được truyền vào hàm thẻ dưới dạng một giá trị độc lập với phần giữ chỗ được liên kết.
const myNoun = "template literal";
function myTagFunction( myStrings, myPlaceholder ) {
const myInitialString = myStrings[ 0 ];
console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}
myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."
Kiểm tra kiến thức
Ký tự nào được dùng để thoát các ký tự?
"
)∖
)/
)Ký tự nào được dùng để nối?
&
.
+