You are on page 1of 15

Tài liệu tổng hợp JavaScript cơ bản

1. Biến và Hằng

Trong JavaScript, biến và hằng số là các khái niệm quan trọng để lưu trữ dữ liệu và thực
hiện các phép tính. Dưới đây là một số thông tin về biến và hằng số trong JavaScript:

Biến:

 Biến trong JavaScript được sử dụng để lưu trữ dữ liệu. Bạn có thể gán giá trị cho
một biến và thay đổi giá trị đó sau đó.

 Để khai báo biến trong JavaScript, bạn có thể sử dụng từ khóa "var", "let" hoặc
"const"

Biến khai báo bằng "var" có phạm vi toàn cục hoặc phạm vi hàm, trong khi biến khai báo
bằng "let" hoặc "const" có phạm vi block (nằm trong cặp dấu ngoặc nhọn "{}").

Hằng số:

 Hằng số trong JavaScript là các biến không thay đổi giá trị sau khi được khai báo.
Bạn không thể gán một giá trị mới cho hằng số sau khi đã khởi tạo nó.

Đó là một số thông tin cơ bản về biến và hằng số trong JavaScript. Lưu ý rằng, từ
phiên bản ES6 (ECMAScript 2015) trở đi, sử dụng "let" và "const" được khuyến
nghị hơn "var" để khai báo biến, vì chúng tạo ra các quy tắc phạm vi rõ ràng hơn.

Ví dụ với "var":

1
Trong ví dụ này, biến "x" được khai báo với từ khóa "var" trong hàm. Mặc dù "x" được
gán giá trị 10 trong khối if, nhưng vì "var" không có phạm vi block, nên "x" trong hàm
cũng thay đổi thành 10.

Ví dụ với "let":

Trong ví dụ này, biến "x" được khai báo với từ khóa "let" trong hàm. Vì "let" có phạm vi
block, nên biến "x" trong khối if chỉ tồn tại trong khối đó và không ảnh hưởng đến biến
"x" bên ngoài khối if.

2
Ví dụ với "const":

Trong ví dụ này, hằng số "x" được khai báo với từ khóa "const" trong hàm. Tương tự như
"let", "const" cũng có phạm vi block và biến "x" trong khối if chỉ tồn tại trong khối đó.
Tuy nhiên, khác với "let", hằng số không thể thay đổi giá trị sau khi đã được khởi tạo,
nên biến "x" bên trong khối if không ảnh hưởng đến biến "x" bên ngoài khối if.

Tóm lại, "var" có phạm vi toàn cục hoặc phạm vi hàm, "let" có phạm vi block và "const"
cũng có phạm vi block nhưng không thể thay đổi giá trị sau khi khởi tạo. Lựa chọn từ
khóa phù hợp phụ thuộc vào yêu cầu và phạm vi sử dụng biến trong mã của bạn.

2. Kiểu dữ liệu

1. Kiểu số (Number): Đại diện cho các số trong JavaScript, bao gồm cả số nguyên
và số thập phân. Ví dụ: 10, 3.14.

2. Kiểu chuỗi (String): Đại diện cho các chuỗi ký tự. Chuỗi được bao quanh bởi dấu
ngoặc đơn hoặc ngoặc kép. Ví dụ: "Hello", 'World'.

3. Kiểu boolean (Boolean): Đại diện cho giá trị true (đúng) hoặc false (sai). Được sử
dụng trong các biểu đồ logic và điều kiện. Ví dụ: true, false.

4. Kiểu mảng (Array): Đại diện cho một tập hợp các giá trị, được lưu trữ dưới dạng
một mảng. Mỗi phần tử trong mảng có thể là bất kỳ kiểu dữ liệu nào. Ví dụ: [1, 2,
3], ["apple", "banana", "orange"].

3
5. Kiểu đối tượng (Object): Đại diện cho một đối tượng, gồm các thuộc tính và
phương thức. Đối tượng được tạo ra từ các cặp key-value (khóa-giá trị). Ví dụ:
{name: "John", age: 25}.

6. Kiểu null (Null): Đại diện cho giá trị không tồn tại hoặc không có giá trị. Ví dụ:
null.

7. Kiểu không xác định (Undefined): Đại diện cho biến chưa được khởi tạo hoặc
không có giá trị. Ví dụ: undefined.

Phân biệt giữa giá trị null và undefined trong JavaScript:

Giải thích: Biến x đã được gán giá trị null, nên so sánh x với null sẽ trả về true. Biến y
không được gán giá trị nào, nên nó có giá trị undefined, và so sánh y với undefined cũng
sẽ trả về true.

3. Cấu trúc điều khiển trong JavaScript:

Cấu trúc điều khiển trong JavaScript cho phép bạn kiểm soát luồng thực thi của
mã bằng cách sử dụng câu lệnh điều kiện (if, else if, else) và vòng lặp (for, while, do-
while). Dưới đây là một số cấu trúc điều khiển phổ biến và một bài tập ví dụ:

 Câu lệnh if-else: Cho phép bạn thực hiện một hành động nếu điều kiện
đúng và một hành động khác nếu điều kiện sai.

4
 Vòng lặp for: Cho phép bạn lặp lại một khối mã một số lần xác định.

 Vòng lặp while: Cho phép bạn lặp lại một khối mã khi một điều kiện cụ thể đúng.

 Vòng lặp do-while: Tương tự như vòng lặp while, nhưng kiểm tra điều kiện sau khi
thực hiện khối mã, đảm bảo khối mã thực thi ít nhất một lần.

5
 Cấu trúc điều khiển switch case trong JavaScript: cho phép kiểm tra một biểu thức
so sánh với nhiều giá trị khác nhau và thực hiện các khối mã tương ứng với giá trị phù
hợp.

 expression là biểu thức được kiểm tra so sánh với các giá trị trong các case.

 value1, value2,... là các giá trị mà expression có thể trùng khớp.

 break được sử dụng để kết thúc mỗi khối mã trong từng case. Nếu không có
break, các khối mã phía sau sẽ tiếp tục được thực thi mà không kiểm tra điều kiện.

4. Xử lý chuỗi trong JavaScript:


JavaScript cung cấp nhiều phương thức tích hợp sẵn để xử lý chuỗi. Dưới đây là
một số phương thức phổ biến và ví dụ về cách sử dụng chúng:
 length: Phương thức length trả về độ dài của một chuỗi.

 toUpperCase và toLowerCase: Phương thức toUpperCase chuyển đổi chuỗi


thành chữ hoa, trong khi toLowerCase chuyển đổi chuỗi thành chữ thường.

6
 charAt và charCodeAt: Phương thức charAt trả về ký tự tại một vị trí cụ thể
trong chuỗi, trong khi charCodeAt trả về mã Unicode của ký tự đó.

 indexOf và lastIndexOf: Phương thức indexOf trả về vị trí đầu tiên của một
chuỗi con trong chuỗi ban đầu, trong khi lastIndexOf trả về vị trí cuối cùng của
chuỗi con đó.

 slice: Phương thức slice trích xuất một phần của chuỗi và trả về một chuỗi mới.

 split: Phương thức split tách chuỗi thành một mảng các chuỗi con dựa trên một ký
tự phân tách.

 replace: Phương thức replace thay thế một chuỗi con bằng một chuỗi khác trong
chuỗi ban đầu.

7
 trim: Phương thức trim loại bỏ khoảng trắng ở đầu và cuối chuỗi.

5. Xử lý mảng trong JavaScript:

Mảng (Array) là một cấu trúc dữ liệu trong JavaScript được sử dụng để lưu trữ và
quản lý một tập hợp các giá trị có cùng kiểu dữ liệu. Mảng trong JavaScript có thể chứa
các giá trị của bất kỳ kiểu dữ liệu nào, bao gồm số, chuỗi, đối tượng, và thậm chí là mảng
khác. Mảng được truy cập bằng chỉ mục, bắt đầu từ 0 cho phần tử đầu tiên và kết thúc ở
chỉ mục (length - 1).

1. Khai báo một mảng:

 Sử dụng cặp dấu ngoặc vuông [] để khai báo một mảng mới.

 Các phần tử trong mảng được phân tách bằng dấu phẩy (,).

2. Truy cập phần tử trong mảng:

 Sử dụng chỉ mục (index) để truy cập vào phần tử trong mảng.

 Chỉ mục bắt đầu từ 0 cho phần tử đầu tiên.

8
3. Độ dài của mảng:

 Sử dụng thuộc tính length để xác định số lượng phần tử trong mảng.

Các phương thức của mảng:

 JavaScript cung cấp nhiều phương thức tích hợp sẵn để thao tác và biến đổi mảng,
bao gồm push(), pop(), shift(), unshift(), slice(), splice(), join(), và nhiều hơn
nữa.

Một số phương thức nâng cao:

 Phương thức map(): Phương thức map() được sử dụng để tạo ra một mảng mới
bằng cách thực hiện một phép biến đổi trên từng phần tử của mảng gốc.

9
 Phương thức filter(): Phương thức filter() được sử dụng để tạo một mảng mới
chứa các phần tử của mảng gốc thoả mãn một điều kiện cụ thể.

 Phương thức reduce(): Phương thức reduce() được sử dụng để tính toán một giá
trị duy nhất từ các phần tử của mảng bằng cách áp dụng một hàm chức năng.

 Phương thức find(): Phương thức find() được sử dụng để tìm phần tử đầu tiên
trong mảng thoả mãn một điều kiện cụ thể.

10
 Phương thức sort(): Phương thức sort() được sử dụng để sắp xếp các phần tử
trong mảng theo thứ tự tăng dần (mặc định) hoặc giảm dần.

 Phương thức forEach(): Phương thức forEach() được sử dụng để thực hiện một
hành động trên từng phần tử của mảng mà không tạo ra mảng mới.

11
 Phương thức every() và some(): Phương thức every() kiểm tra xem tất cả các
phần tử trong mảng có thoả mãn một điều kiện cụ thể hay không. Phương thức
some() kiểm tra xem có ít nhất một phần tử trong mảng thoả mãn điều kiện hay
không.

6. Xử lý bất đồng bộ trong JavaScript:

Xử lý bất đồng bộ (Asynchronous) trong JavaScript là một khái niệm quan trọng
khi làm việc với các tác vụ mà thời gian xử lý không thể đảm bảo là đồng bộ. Điều này
cho phép các tác vụ tiếp tục thực hiện mà không chờ đợi kết quả của tác vụ trước đó hoàn
thành. JavaScript cung cấp các cơ chế xử lý bất đồng bộ, như callback, Promise và
async/await để làm việc với xử lý bất đồng bộ.

 Callback: Callback là một hàm được truyền vào một hàm khác như một tham số
để được gọi sau khi một tác vụ bất đồng bộ hoàn thành.

12
 Promise: Promise là một đối tượng giúp xử lý bất đồng bộ và xử lý kết quả thành
công hoặc thất bại.

13
 Async/Await: Async/Await là một cú pháp dễ đọc và viết mã xử lý bất đồng bộ
một cách tương đối tuần tự, dựa trên Promise.

14
15

You might also like