Giới thiệu
Các tính chất cơ bản của ngôn ngữ Javascript: Có một chuẩn chung tên là ECMAScript. Nhưng mỗi Engine lại hổ trợ ở các mức độ khác nhau. Phiên bản thường được sử dụng là ECMAScript 6 viết tắt là ES6. Phiên bản ES6 ra đời năm 2015 nên cũng gọi là ES2015.
Khai báo biến và hằng
Tên biến trong JavaScript phân biệt chữ hoa chữ thường. Trong JavaScript, các câu lệnh được phân tách bằng dấu chấm phẩy (`;`). Nhưng có thể không cần sử dụng dấu chẩm phẩy sau một câu lệnh nếu nó được viết trên dòng khác nhau.
Hoisting
Hoisting là một khái niệm trong Javascript mô tả chúng ta có thể sử dụng biến rồi khai báo nó sau. Giá trị của biến khi khai báo `var` là `undefined`.
Kiểu dữ liệu
Chuẩn ECMAScript mới nhất có 8 kiểu dữ liệu: Bao gồm 7 kiểu dữ liệu nguyên thủy (primitive data type) và một dữ liệu Object. Bảy kiểu dữ liệu nguyên thủy là Boolean, null, undefined, Number, BigInt, String và Symbol.
Array, Object và Regex
Mảng (array) là danh sách các phần tử sắp xếp liên tiếp với nhau với thời gian truy cập một phần tử là hằng số. Mảng được viết trong dấu ngoặc vuông `[` và `]` được phân tách bởi dấu phẩy `,`. Khi khởi tạo biến thì cũng khởi tạo giá trị `length` là độ lớn của mảng.
Câu lệnh điều khiển
Câu lệnh điều khiển bao gồm câu lệnh if, câu lệnh switch. Sử dụng câu lệnh `if` để thực thi một câu lệnh nếu một điều kiện logic là `true`. Có thể sử dụng mệnh đề `else` để thực thi một câu lệnh nếu điều kiện là `false`.
Template strings
Template strings là cú pháp tạo string dùng ký tự ` thay vì sử dụng dấu nháy đơn hoặc nháy kép. Template strings được sử dụng để nhúng các biểu thức ở trong nó và viết một string nhiều dòng.
Chuyển đổi kiểu
Javascript là ngôn ngữ kiểu động (dynamically typed) và kiểu yếu (weak typed). Tức là khi khai báo biến thì không cần khai báo kiểu dữ liệu cho nó (kiểu động). Và biến có thể tự động chuyển đổi kiểu dữ liệu khi cần thiết (kiểu yếu).
Vòng lặp
Phần này giới thiệu các câu lệnh lặp khác nhau của JavaScript. Các vòng lặp với `for`, `while`, `do-while`, câu lệnh `break`, `continue` tương tự như ngôn ngữ C. Một vòng lặp `for` lặp lại cho đến khi một điều kiện xác định ước tính thành `false`.
Vòng lặp (tiếp)
Ngoài các vòng lặp giống như ngôn ngữ C, Javascript còn cung cấp hai dạng vòng lặp đó là for-in và for-of. Câu lệnh `for ... in` là vòng lặp mà nó lặp các thuộc tính có thể đếm được của một đối tượng (thuộc tính có `enumerable` là true).
Toán tử
Chương này mô tả các biểu thức và toán tử của JavaScript, bao gồm toán tử gán, so sánh, số học, bitwise, logic, chuỗi và toán tử điều kiện. Toán tử số học `+` (cộng), `-` (trừ), `*` (nhân), `%` (lấy phần dư) tương tự như ngôn ngữ C.
Toán tử (phần 2)
Giới thiệu toán tử delete, toán tử in, toán tử instanceof, toán tử typeof và toán tử void. Sử dụng toán tử delete để xóa một object, một thuộc tính của object hoặc một index của mảng. Khi xóa thành công thì câu lệnh trả về true, còn không thì trả về false.
Toán tử phân rã
Destructuring Assignment là một loại toán tử gán, nó sẽ phân rã đối tượng gán thành các biến. Toán tử này sử dụng với object và array.
Functions
Hàm được định nghĩa là biểu thức có thể thực thi, bao gồm tên hàm, tham số đầu vào và giá trị trả về. Có hai dạng truyền tham số vào hàm là truyền theo giá trị và truyền theo tham chiếu.
Closure
Closure là một trong những tính năng mạnh mẽ nhất của JavaScript. Closure cũng chính là tính năng function scope. Đó là hàm cha truy cập được cái biến của hàm con nhưng hàm con lại không truy cập được các biến của hàm cha.
Hàm số (phần 2)
Giới thiệu hàm số sử dụng biến danh sách tham số qua biến arguments. Giới thiệu cú pháp Rest parameters là danh sách tham số dạng gộp cùng với giới thiệu tham số mặc định từ phiên bản ES2015.
Hàm mũi tên
Hàm mũi tên là cách viết ngắn gọn của biểu thức hàm mà hàm này không có các biến `this`, `arguments`, `super` của riêng nó. Trong trường hợp hàm không có thân hàm, chỉ có biểu thức thì tương đương với hàm trả về biểu thức.
Ngoại lệ
Bạn có thể ném ngoại lệ (Exception) bằng cách sử dụng câu lệnh `throw` và xử lý ngoại lệ bằng cách sử dụng câu lệnh `try ... catch`. Chúng ta có thể ném bất cứ kiểu Exception nào. Ví dụ như số, string, object.