Chương này tóm tắt ngắn gọn các tính năng của JavaScript mà chúng ta đã học bây giờ, đặc biệt chú ý đến những điều thú vị trong Javascript.

1. Cấu trúc Code

Câu lệnh được phân định bằng dấu chấm phẩy:

alert('Hello'); alert('World');

Thông thường, ngắt dòng cũng được coi là dấu phân cách, do đó cũng sẽ hoạt động:

alert('Hello')
alert('World')

Đó gọi là chèn dấu chấm phẩy tự động. Đôi khi, nó không hoạt động, ví dụ:

alert("There will be an error after this message")

[1, 2].forEach(alert)

Hầu hết các hướng dẫn về lối viết đều đồng ý rằng chúng ta nên đặt dấu chấm phẩy sau mỗi câu.

Dấu chấm phẩy không bắt buộc sau các khối code {...}và cú pháp cấu trúc với chúng như các vòng lặp:

function f() {
  // no semicolon needed after function declaration
}

for(;;) {
  // no semicolon needed after the loop
}

Tuy nhiên, ngay cả khi chúng ta có thể đặt một dấu chấm phẩy ở ​​đâu đó, đó không phải là một lỗi. Nó sẽ bị bỏ qua.

Thêm trong: Cấu trúc mã.

2. Chế độ nghiêm ngặt(Strict mode)

Để kích hoạt đầy đủ tất cả các tính năng của JavaScript hiện đại, chúng ta nên bắt đầu các tập lệnh với "use strict".

'use strict';

...

Lệnh phải ở trên cùng của tập lệnh hoặc ở phần đầu của thân hàm.

Không có "use strict", mọi thứ vẫn hoạt động, nhưng một số tính năng hoạt động theo cách thức cũ. Chúng tôi thường thích sử dụng các tính năng hiện đại hơn.

Một số tính năng hiện đại của ngôn ngữ cho phép chế độ nghiêm ngặt hoàn toàn.

Thêm trong: Chế độ hiện đại, “sử dụng nghiêm ngặt” .

3. Biến

Có thể được khai báo bằng cách sử dụng:

  • let
  • const (không đổi, không thể thay đổi)
  • var (kiểu cũ, sẽ thấy sau)

Một tên biến có thể bao gồm:

  • Chữ cái và chữ số, nhưng ký tự đầu tiên có thể không phải là một chữ số.
  • Các ký tự $_là bình thường, ngang bằng với các chữ cái.
  • Bảng chữ cái phi chữ Latinh và chữ tượng hình cũng được cho phép, nhưng thường không được sử dụng.

Các biến được gõ động. Họ có thể lưu trữ bất kỳ giá trị:

let x = 5;
x = "John";

Có 8 loại dữ liệu:

  • number cho cả số nguyên và số nguyên,
  • bigint cho số nguyên có độ dài tùy ý,
  • string cho chuỗi,
  • booleancho các giá trị logic : true/false,
  • null– một loại có một giá trị duy nhất null, có nghĩa là trống rỗng, hoặc không tồn tại.
  • undefined– một loại có một giá trị duy nhất undefined, nghĩa là không được chỉ định,
  • objectsymbol– đối với các cấu trúc dữ liệu phức tạp, chúng ta chưa tìm hiểu chúng.

Các toán tửtypeof trả về kiểu cho một giá trị, với hai trường hợp ngoại lệ:

typeof null == "object" // error in the language
typeof function(){} == "function" // functions are treated specially

Thêm trong: Biếnkiểu dữ liệu.

4. Sự tương tác

Chúng tôi đang sử dụng trình duyệt làm môi trường làm việc, vì vậy các chức năng UI cơ bản sẽ là:prompt(question, [default]) Hỏi một questionvà trả lại những gì khách truy cập đã nhập hoặc nullnếu họ nhấp vào Hủy bỏ. confirm(question) Hỏi một questionvà đề nghị chọn giữa Ok và Hủy. Sự lựa chọn được trả lại là true/false. alert(message) Đầu ra mộtmessage.

Tất cả các chức năng này là phương thức , chúng tạm dừng thực thi code và ngăn khách truy cập tương tác với trang cho đến khi họ trả lời.

Ví dụ:

let userName = prompt("Your name?", "Cafedev");
let isTeaWanted = confirm("Do you want some tea?");

alert( "Visitor: " + userName ); // Cafedev
alert( "Tea wanted: " + isTeaWanted ); // true

Thêm trong: Tương tác: cảnh báo, nhắc nhở, xác nhận.

5. Toán tử

JavaScript hỗ trợ các toán tử sau: Số học

Thường xuyên : * + - /, cũng %cho phần còn lại và **cho sức mạnh của một số.

Các toán tử nhị phân cộng +chuỗi nối. Và nếu bất kỳ toán hạng nào là một chuỗi, thì một toán hạng khác cũng được chuyển đổi thành chuỗi:

alert( '1' + 2 ); // '12', string
alert( 1 + '2' ); // '12', string

Gán

Có một nhiệm vụ đơn giản: a = bvà kết hợp như thế nào a *= 2.

Bitwise

Toán tử bitwise làm việc với các số nguyên 32 bit ở mức thấp nhất, mức bit.

Toán tử duy nhất có ba tham số : cond ? resultA : resultB. Nếu condlà đúng, trả lại resultA, nếu không resultB.

Toán tử logic

Logic AND &&và OR ||thực hiện đánh giá ngắn và sau đó trả về giá trị khi dừng (không cần thiết true/ false). Logic KHÔNG !chuyển đổi toán hạng thành kiểu boolean và trả về giá trị nghịch đảo.

Toán tử kết hợp Nullish

Các ??nhà khai thác cung cấp một cách để chọn một giá trị xác định từ một danh sách các biến. Kết quả a ?? batrừ khi nó null/undefined, sau đó b. So sánh

Kiểm tra == là sự bằng nhau cho các giá trị của các kiểu khác nhau và nó sẽ tự chuyển đổi chúng thành một số (ngoại trừ nullundefinedbằng nhau và không có gì khác), vì vậy các giá trị này bằng nhau:

alert( 0 == false ); // true
alert( 0 == '' ); // true

So sánh chuyển đổi thành một số.

Toán tử đẳng thức nghiêm ngặt ===không thực hiện chuyển đổi: các loại khác nhau luôn có nghĩa là các giá trị khác nhau cho nó.

Giá trị nullundefinedđặc biệt: chúng bằng nhau và không bằng bất cứ thứ gì khác.

So sánh lớn hơn / ít hơn so sánh các chuỗi ký tự theo từng ký tự, các loại khác được chuyển đổi thành một số.

Thêm trong: Toán tử cơ bản, toán học , So sánh , Toán tử logic , Toán tử hợp nhất Nullish ‘??’ .

6. Vòng lặp

  • Chúng tôi bao gồm 3 loại vòng:
// 1 while (condition) {   ... }
// 2 do {   ... } while (condition); 
// 3 for(let i = 0; i < 10; i++) {   ... }
  • Biến được khai báo trong for(let...)vòng lặp chỉ hiển thị bên trong vòng lặp. Nhưng chúng ta cũng có thể bỏ qua letvà sử dụng lại một biến hiện có.
  • Chỉ thị break/continuecho phép thoát toàn bộ vòng lặp / vòng lặp hiện tại. Sử dụng nhãn để break các vòng lặp lồng nhau.

Chi tiết trong: Vòng lặp: while và for .

Sau này chúng ta sẽ nghiên cứu thêm các loại vòng lặp để đối phó với các đối tượng.

7. Switch

Cấu trúc chuyển đổi trên máy tính có thể thay thế nhiều ifkiểm tra. Nó sử dụng ===(So sánh bình đẳng nghiêm ngặt) để so sánh.

Ví dụ:

let age = prompt('Your age?', 18);

switch (age) {
  case 18:
    alert("Won't work"); // the result of prompt is a string, not a number
    break;

  case "18":
    alert("This works!");
    break;

  default:
    alert("Any value not equal to one above");
}

Chi tiết trong: Câu lệnh “switch”

8. Hàm

Chúng tôi đã trình bày ba cách để tạo một hàm trong JavaScript:

  1. Khai báo hàm: hàm trong luồng code chính
function sum(a, b) {   let result = a + b;   return result; }

Hàm biểu thức: hàm trong ngữ cảnh của biểu thức

let sum = function(a, b) {
  let result = a + b;

  return result;
};

Hàm mũi tên:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

// expression at the right side
let sum = (a, b) => a + b;

// or multi-line syntax with { ... }, need return here:
let sum = (a, b) => {
  // ...
  return a + b;
}

// without arguments
let sayHi = () => alert("Hello");

// with a single argument
let double = n => n * 2;
  • Các hàm có thể có các biến cục bộ: những biến được khai báo bên trong cơ thể của nó. Các biến như vậy chỉ được nhìn thấy bên trong hàm.
  • Các tham số có thể có các giá trị mặc định : function sum(a = 1, b = 2) {...}.
  • Hàm luôn trả lại một cái gì đó. Nếu không có returntuyên bố, thì kết quả là undefined.

Chi tiết: xem Hàm , Hàm Mũi tên, Hàm biểu thức.

9. Thêm nữa

Đó là một danh sách ngắn gọn các tính năng JavaScript. Cho đến bây giờ chúng tôi chỉ nghiên cứu cơ bản. Hơn nữa trong phần tiếp theo, bạn sẽ tìm thấy nhiều tính năng đặc biệt và nâng cao hơn của JavaScript.

Phần tiếp theo của chúng ta sẽ là phần 3 nói về Object, ace có thể tham khao series ngay bên dưới.

Full series tự học Javascript từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!