Giới thiệu tổng quan về ES6
- 23-11-2023
- Toanngo92
- 0 Comments
JavaScript ES6 (còn được gọi là ECMAScript 2015 hoặc ECMAScript 6) là phiên bản JavaScript mới hơn được giới thiệu vào năm 2015.
ECMAScript là tiêu chuẩn mà ngôn ngữ lập trình JavaScript sử dụng. ECMAScript cung cấp đặc điểm kỹ thuật về cách thức hoạt động của ngôn ngữ lập trình JavaScript. Ở bài dưới đây, chúng ta sẽ cùng tìm hiểu một số khái niệm tổng quan về ES6.
Mục lục
Khai báo biến
Từ khóa let
JavaScript let được sử dụng để khai báo các biến. Trước đây, các biến được khai báo bằng câu lệnh var.
Các biến được khai báo bằng let là block-scoped. Có nghĩa là phạm vi biến chỉ có thể truy cập được trong một khối cụ thể. Ví dụ:
// variable declared using let
let name = 'Hello';
{
// can be accessed only inside
let name = 'Toanngo';
console.log(name); // Toanngo
}
console.log(name); // Hello
Khai báo hằng số
Từ khóa const
Câu lệnh const được sử dụng để khai báo hằng số trong JavaScript.
Ví dụ:
// name declared with const cannot be changed
const name = 'This is a constanct';
Sau khi khai báo, bạn không thể thay đổi giá trị của biến const. Ngoài ra const có thể sử dụng để khai báo hàm, được thẻ hiện ở các đoạn sau.
Định nghĩa hàm (Arrow function)
Trong ES6, có thể sử dụng các Arrow Function (hàm mũi tên) để tạo biểu thức hàm. Ví dụ:
// old version
function function_name (param){
// todo
}
// using const
const function_name1 = function(param){
// todo
}
// ES6
const function_name2 = (param) =>{
// todo
}
Định nghĩa Lớp (Class)
Để khởi tạo lớp trong Javascript, sử dụng từ khóa Class. Với việc khởi tạo biến, sử dụng từ khóa new
class Car {
constructor(name) {
this.name = name;
}
}
let myCar1 = new Car('Hyundai I10');
let myCar2 = new Car('Toyota vios');
console.log(myCar1.name); // Hyundai I10
Tham số mặc định (Default Parameter)
Trong phiên bản ES6, bạn có thể truyền các giá trị mặc định trong đối số của hàm, sau khi định nghĩa, khi gọi hàm nếu lập trình viên không truyền tham số, javascript tự hiểu sẽ sử dụng giá trị được gán mặc định cho biến khi định nghĩa. Ví dụ:
//define function
const sum = (x, y = 5) => {
// take sum
// the value of y is 5 if not passed
console.log(x + y);
}
// call function
sum(5); // 10
sum(5, 15); // 20
Khuôn mẫu chữ (Template Literals)
Template Literals (khuôn mẫu chữ) hay còn gọi là Template Strings là một cú pháp mới để khai báo String trong JavaScript được giới thiệu trong ES2015/ES6. Nó cho phép chúng ta sử dụng multi-line string, biến, biểu thức, hàm bên trong String mà không phải thông qua phép nối chuỗi.
Ví dụ phong cách cũ:
let first_name = "Hello";
let last_name = "World";
console.log('This is ' + first_name + ' ' + last_name);
Phong cách ES6:
let first_name = "Jack";
let last_name = "Sparrow";
console.log(`Hello ${first_name} ${last_name}`);
Lưu ý code khi sử dụng phong cách cũ vẫn chạy bình thường.
Hủy cấu trúc (Destructuring)
Destructuring là một cú pháp cho phép chúng ta phân tách nhanh các thuộc tính của một Object hoặc một Array vào danh sách biến hoặc cấu trúc khác theo mong muốn, giúp tiết kiệm thời gian viết mã.
Ví dụ phong cách cũ:
// before you would do something like this
const person = {
name: 'Sara',
age: 25,
gender: 'female'
}
let name = person.name;
let age = person.age;
let gender = person.gender;
console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female
Ví dụ phong cách ES6:
const person = {
name: 'Sara',
age: 25,
gender: 'female'
}
let { name, age, gender } = person;
console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female
Từ khóa import và export
Trong ES6, chúng ta có thể export (xuất) một hàm, lớp từ một tệp và sử dụng nó trong một tệp khác bằng cách import (nhập) nó. Điều này giúp tạo ra các thành phần có thể sử dụng lại.
Ví dụ export:
Tạo file test.js
// export
export default function myFeature(name, age) {
console.log(`The name is ${name}. And age is ${age}.`);
}
Ví dụ import:
import contact from './test.js';
contact('Hello', 10);
// The name is Hello. And age is 10
Từ khóa Promise (lời hứa)
Từ khóa promise sử dụng để xử lý bất đồng bộ trong ứng dụng Javascript. Cách hiểu đơn giản giống như khi thực hiện một công việc xong sau đó sẽ làm gì tiếp theo. Ví dụ:
// returns a promise
let countValue = new Promise(function (resolve, reject) {
reject('Promise rejected');
});
// executes when promise is resolved successfully
countValue.then(
function successValue(result) {
console.log(result); // Promise resolved
},
)
Các tham số còn lại (Rest Parameter) và toán tử trải rộng (Spread Operator)
Rest Parameter
ES6 cung cấp khái niệm Rest Parameter để biểu diễn số lượng đối số không xác định dưới dạng một mảng. Ví dụ:
// define function
const show = (a, b, ...args) => {
console.log(a); // one
console.log(b); // two
console.log(args); // ["three", "four", "five", "six"]
}
// call function
show('one', 'two', 'three', 'four', 'five', 'six')
Spread Operator
let arr1 = ['one', 'two'];
let arr2 = [...arr1, 'three', 'four', 'five'];
console.log(arr2); // ["one", "two", "three", "four", "five"]
Rest Parameter và Spread Operator có cú pháp hơi tương đồng nhau. Tham số còn lại (Rest Parameter) ngược lại với toán tử trải rộng (Spread Operator). trong khi toán tử trải rộng Spread Operator mở rộng các phần tử của một iterable, toán tử còn lại sẽ nén chúng lại. Trong các hàm khi chúng ta yêu cầu truyền đối số nhưng không chắc mình phải truyền bao nhiêu đối số, tham số còn lại sẽ giúp việc này dễ dàng hơn.
Bài tập
1. Biến, kiểu dữ liệu và toán tử
-
Khai báo 3 biến
name,age,isStudentvà in ra màn hình. -
Nhập vào hai số và in ra tổng, hiệu, tích, thương.
-
Chuyển đổi kiểu dữ liệu: nhập chuỗi
"123"và ép sang kiểu số. -
Tính chu vi và diện tích hình tròn (bán kính nhập từ bàn phím).
-
Tính BMI = cân nặng / (chiều cao²), in ra chỉ số và đánh giá.
-
Đổi đơn vị: nhập số giây, đổi sang giờ – phút – giây.
-
Nhập nhiệt độ °C, chuyển sang °F theo công thức
F = C * 9/5 + 32. -
Nhập số tiền VND, đổi sang USD theo tỉ giá cố định.
2. Cấu trúc điều kiện (if, else if, switch)
-
Nhập tuổi → in ra người lớn, trẻ em hay thanh niên.
-
Kiểm tra số nhập vào là chẵn hay lẻ.
-
Kiểm tra năm nhập vào có phải năm nhuận không.
-
Nhập điểm trung bình → xếp loại (giỏi, khá, trung bình, yếu).
-
Nhập tháng → in ra số ngày trong tháng (có xét năm nhuận).
-
Nhập ba số → in ra số lớn nhất và nhỏ nhất.
-
Viết chương trình tính tiền điện theo bậc thang.
-
Viết máy tính mini đơn giản (2 số + toán tử
+ - * /).
🔄 3. Vòng lặp (for, while, do while)
-
In ra các số từ 1 đến 100.
-
In ra các số chẵn từ 1 đến 100.
-
Tính tổng các số từ 1 đến
n. -
Tính giai thừa của
n. -
In ra bảng cửu chương 1–10.
-
Nhập số
n→ in ra dãy Fibonacci đếnnphần tử. -
Tính tổng các chữ số của một số nguyên dương.
-
Đếm số lượng chữ số của một số.
-
Đảo ngược số nguyên (ví dụ:
12345→54321). -
Kiểm tra số nguyên tố.
4. Mảng (Array)
-
Tạo mảng 5 số nguyên, in ra tổng các phần tử.
-
Tìm phần tử lớn nhất, nhỏ nhất trong mảng.
-
Đếm số phần tử chẵn trong mảng.
-
Tính trung bình cộng của các phần tử.
-
Nhập vào mảng tên sinh viên → sắp xếp theo thứ tự A–Z.
-
Nối hai mảng lại thành một mảng mới.
-
Loại bỏ phần tử trùng lặp trong mảng.
-
Tìm vị trí đầu tiên của phần tử
xtrong mảng. -
Đảo ngược mảng mà không dùng
reverse(). -
Tính tổng các số lẻ trong mảng.
5. Chuỗi (String)
-
Đếm số ký tự trong chuỗi.
-
Viết hoa ký tự đầu tiên của chuỗi.
-
Đếm số nguyên âm trong chuỗi.
-
Kiểm tra chuỗi có đối xứng (palindrome) hay không.
-
Tách chuỗi
"Xin chào JavaScript"thành mảng từ. -
Nối hai chuỗi bất kỳ.
-
Thay thế tất cả ký tự
"a"bằng"@". -
Kiểm tra chuỗi có chứa từ khóa
"JS"hay không. -
Cắt lấy 5 ký tự đầu tiên của chuỗi.
-
Đảo ngược chuỗi nhập vào.
6. Hàm (Function)
-
Viết hàm tính bình phương một số.
-
Viết hàm tính tổng từ 1 đến
n. -
Viết hàm kiểm tra số nguyên tố.
-
Viết hàm đảo ngược chuỗi.
-
Viết hàm trả về số lớn nhất trong mảng.
-
Viết hàm đếm số nguyên âm trong chuỗi.
-
Viết hàm tính giai thừa bằng đệ quy.
-
Viết hàm kiểm tra năm nhuận.
-
Viết hàm trả về Fibonacci thứ
n. -
Viết hàm tính tổng các phần tử lẻ trong mảng.
7. Bài tổng hợp logic
-
Giả lập trò chơi đoán số (máy random số 1–100, người đoán đến khi đúng).
-
Tạo chương trình nhập dãy điểm học sinh → in ra điểm trung bình, cao nhất, thấp nhất.
-
Nhập ngày/tháng/năm → in ra ngày kế tiếp.
-
Tạo hàm chuẩn hóa họ tên (xóa khoảng trắng thừa, viết hoa chữ cái đầu).
-
Mô phỏng rút thăm trúng thưởng (chọn ngẫu nhiên 1 phần tử từ mảng).
Yêu cầu:
- Tạo một lớp Person với các thuộc tính và phương thức sau:
- Thuộc tính:
name(tên)age(tuổi)gender(giới tính)address(địa chỉ)
- Phương thức:
introduce():- In ra thông tin dạng:
"My name is [name], I am [age] years old, I am a [gender], and I live in [address]."
- In ra thông tin dạng:
isAdult():- Trả về
truenếuage >= 18, ngược lại trả vềfalse.
- Trả về
updateAddress(newAddress):- Cập nhật địa chỉ mới.
- Thuộc tính:
- Tạo 3 đối tượng từ lớp Person với các giá trị khác nhau.
So sánh tuổi của 2 đối tượng (ai lớn tuổi hơn) và in ra kết quả:
"[Person1] is older than [Person2]" hoặc "[Person1] is younger than [Person2]".
Yêu cầu bổ sung:
-
- So sánh toàn bộ đối tượng:
- Tạo một phương thức
equals()để kiểm tra hai đối tượng Person có cùng thông tin không (tên, tuổi, giới tính, địa chỉ). - In ra:
"[Person1] and [Person2] are the same." hoặc "[Person1] and [Person2] are different."
- Tạo một phương thức
- Tạo danh sách đối tượng:
- Lưu các đối tượng Person vào một danh sách (mảng).
- Lọc danh sách để tìm những người trưởng thành (
isAdult() === true).
- So sánh toàn bộ đối tượng:




