Những điều đặc biệt trong Javascript

Trong phần này chúng ta sẽ tóm tắt thật ngắn gọn những tính năng chúng ta đã học đến giờ. Và nhận ra một số tinh tế trong đó

Cấu trúc code - Code structure

Các câu lệnh lệnh sẽ được phân cách bằng dấu chấm phẩy.

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

Và thông thường xuống dòng thì cũng coi như là sự phân cách, cho nên chúng cũng vẫn hoạt động bình thường

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

Đó được gọi là sự thêm dấu chấm phẩy tự động

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

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

...Nhưng nếu thậm chí chúng ta vẫn đặt "thừa" dấu chấm phẩy , sẽ  không xảy ra lỗi gì cả, nó sẽ được bỏ qua.

Chế độ nghiêm ngặt - strict mode

Để kích hoạt đầy đủ các tính năng của Javascript, chúng ta nên bắt đầu với "use strict"- chế độ nghiêm ngặt.

'use strict';

...

Lệnh cần được đặt trên cùng của script hoặc là lúc bắt đầu viết một function.

Nếu không có "use strict", mọi thứ vẫn hoạt động, nhưng một vài tính năng hoạt động theo cách thức cũ. Chúng ta thích những cách thức hiện đại hơn đúng không?

Một số tính năng hiện đại ( như là classes, chúng ta sẽ học về sau) cho phép chế độ nghiêm ngặt hoàn toàn.

Biến - Variable

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

  • let
  • const (hằng số, không thể thay đổi)
  • var (kiểu cũ, chúng ta sẽ xem sau)

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

  • Chữ cái và chữ số, nhưng ký tự đầu tiên thì có thể không được là chữ số.
  • ký tự $ và _ được dùng bình thường như những chữ cái khác.
  • Bảng chữ cái phi Latinh ( 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án tự động, nó có thể chứ bất kỳ giá trị nào:

let x = 5;
x = "John";

Và sau đây là 7 loại dữ liệu:

  • Number - dùng cho cả số lẻ và số nguyên
  • String - dùng cho các chuỗi ký tự
  • Boolean - dùng cho các giá trị logic : true/false
  • Null - loại giá trị null có nghĩa là trống rỗng hoặc không tồn tại.
  • Undefined - loại giá trị mà nó không được xác định , hoặc không được chỉ định.
  • Object symbol - đối với các cấu trúc dữ liệu phức tạp, và định danh là duy nhất.

Sự tương tác - Interaction

Chúng ta sử dụng browser như là một môi trường làm việc, vậy về cơ bản UI sẽ là:

prompt(question[, default])

hỏi câu hỏi, sau đó trả về kết quả đó là liệu người dùng nhập thông tin hay là họ click "cencal" thì trả về null

confirm(question)

Hỏi câu hỏi và yêu cầu chọn giữa OK và Cancel. Sự lựa chọn đó sẽ trả về true/false

alert(message)

Đầu ra là một thông báo trên màn hình.

Tất cả các câu lệnh chức năng trên đầu là một modal hiện ra, và chúng dừng việc thực hiện code và ngăn người dùng tương tác với trang web cho đến khi họ trả lời.

Toán tử - Operators

Javascript hỗ trợ các toán tử sau đây:

Số học - Arithmetical

Các phép toán: + - * /. thêm % để chia lấy dư và ** để lấy bình phương một số.

Lưu ý: Trong phép toán, dấu + để cộng chuỗi, bất kỳ toán hạng nào mà là string, thì tất cả các toán hạng khác cũng được chuyển thành chuỗi.

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

Phéo gán - Assignments

Phép gán được hiểu đơn giản là: a= b. hoặc viết tắt kết hợp a *=2 ( a = a*2 )

Toán bit - Bitwise

Toán bit làm việc với số nguyên trên bit-level : xem thêm docs để biết khi nào ta nên dùng chúng.

Toán tử 3 ngôi - Ternary

Toán tử duy nhất mà có tới 3 tham số: điều kiện ? kết quả A : Kết quả B

Trong đó nếu điều kiện đúng, thì trả về Kết quả A, nếu không thì trả về Kết quả B.

Toán tử logic - Logical operators

Có 2 phép đó là phép && hoặc là phép hoặc ||

Phép so sánh - Comparisons

Phép kiểm tra == cho những loại giá trị khác nhau, và chuyển chúng thành một number ( ngoại trừ null và undefined)

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

Phép so sánh nghiêm ngặt hơn đó là ===. Chúng không chuyển về một number để só sánh. Khác loại tức là khác giá trị.

Gía trị null undefined đặc biệt: Chúng == nhau, và không bằng bất cứ giá trị nào khác.

So sánh lớn hơn/ nhỏ hơn: với string thì so sánh chuỗi ký tự, các loại khác thì được chuyển đổi về thành number.

Vòng lặp - Loops

Chúng ta có 3 kiểu vòng lặp như sau

// 1
while (condition) {
  ...
}

// 2
do {
  ...
} while (condition);

// 3
for(let i = 0; i < 10; i++) {
  ...
}

Cấu trúc "switch" - The "switch" construct

"switch" có thể thay thế nhiều câu lệnh check if. Nó dùng phép === (so sánh nghiêm ngặt về loại dữ liệu) để 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

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

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

Trên đây là danh sách ngắn gọn các tính năng của Javascript. Những bài đầu chúng ta chỉ nghiên cứu cơ bản. Trong seri này bạn sẽ tìm thấy nhiều tính năng nâng cao và đặc biệt hơn nữa.