Lý Thuyết Flashcards
The Event Loop
JavaScript has a runtime model based on an event loop, which is responsible for executing the code, collecting and processing events, and executing queued sub-tasks. This model is quite different from models in other languages like C and Java.
JavaScript có mô hình thời gian chạy dựa trên vòng lặp sự kiện, chịu trách nhiệm thực thi mã, thu thập và xử lý các sự kiện cũng như thực thi các tác vụ phụ được xếp hàng đợi. Mô hình này khá khác biệt so với các mô hình trong các ngôn ngữ khác như C và Java.
What is Javascript ?
Javascript is a high-level object-oriented , multi-paradigm programming language
Javascript là ngôn ngữ lập trình đa mô hình, hướng đối tượng cấp cao
- High level
- Garbage - collected
- Interepreted or just - in - time compiled
- Multi - pradigm
- Prototype - based object - oriented
- First - class functions
- Dynamic
- Single - threaded
- Non - blocking envent loop
Quy tắc đặt tên cho Biến
Chữ đầu viết thường , chữ sau viết hoa
Không bắt đầu bằng số
Có bao nhiêu kiểu dữ liệu nguyên bản ?
JavaScript has dynamic typing :
- Number
- String
- Boolean
- Undefined ( Biến khai báo nhưng không gán giá trị )
- Null : giá trị trống
We do not have to manually dèfine the data type of the value stored in a variable . Instead , data types are determined automatically
Phân biệt Let Const Var
Sử dụng từ khóa “ Let “ để khai báo các biến có thể thay đổi sau này trong quá trình thực thi chương trình
- Const để khai báo các biến không thay đổi ở bất kỳ thời điểm nào trong tương lai
Strings and template Literals
Template Literals :
Viết chuỗi string một cách liền mạch ``
Trong Javascript có 5 giá trị sai đó là ?
0, ‘ ‘, undefined, null, NaN
Statements and Expressions
Biểu thức là một đoạn mã tạo ra một giá trị
Statements thì sẽ thường kết thức bởi dấu “ ; “
Basic Array Operations
.push Thêm giá trị vào cuối mảng
.unshift Thêm giá trị vào đầu mảng
Cả 2 phương thức trên đều trả về độ dài của mảng mới
Remove Elements
.pop() Xoá phần tử cuối mảng
Phương thức này trả về phần tử đã bị loại bỏ
.shift() Xoá phần tử đầu mảng
indexOf(“ “ ) Biết vị trí của phần tử trong mảng
includes Trả về True nếu phần tử nằm trong mảng và False nếu phần tử không nằm trong mảng
Cơ chế hoạt động khi một phím nhấn trong JavaScript
Vì vậy khi sự kiện xảy ra , chúng tôi sẽ gọi hàm này với đối tượng sự kiện làm đối số
Như thế nào là ngôn ngữ bậc cao
Ngôn ngữ bậc thấp thì bạn phải quản lý các tài nguyên như Ram , Bộ nhớ một cách thủ công
Ngôn ngữ bậc cao thì không cần phải làm nhưng việc đó => dễ học , dễ sử dụng , nhưng nhược điểm là các chương trình sẽ không bao giờ nhanh hoặc được tối ưu hoá như các chương trình C
—
Bên cạnh đó là việc thu gom rác ( Garbage - collected )
Tự động loại bỏ các đối tượng cũ ra khỏi bộ nhớ máy tính
Multi - paradigm
- Procedural programming : Tổ chức mã theo cách tuyến tính
- OOP
- Functional programming
Nhiều ngôn ngữ chỉ có 1 loại , nhưng với JavaScript nó có tất cả , nên nó được gọi là đa mô hình
What is a JavaScript Engine ?
Là một chương trình máy tính thực thi ( Executes ) mã JavaScript
Call Stack : Chứa các mã JavaScript được thực thi
Heap : Chưa các Object trong memory
Compilation và Interpretation
Mọi chương trình đều cần chuyển đổi thành mã máy và có thể xảy ra bằng cách sử dụng biên dịch hoặc thông dịch .
Trong quá trình biên dịch , toàn bộ mã nguồn được chuyển thành mã máy cùng một lúc . Và mã máy này sau đó được viết thành một tệp di động có thể được thực thi trên bất kỳ máy tính nào
Just - in - time ( JIT ) : biên dịch toàn bộ mã thành mã máy cùng một lúc và sau đó thực thi nó ngay lập tức
JavaScript Runtime là gì ?
Một JavaScript Runtime điển hình cũng bao gồm một hàng đợi gọi lại ( Callback Queue ) . Đây là một cấu trúc dữ liệu chứa tất cả các hàm gọi lại sẵn sàng được thực thi .
Ví dụ : khi bấm OnClick thì hàm gọi lại sẽ được đưa vào Callback Queue , nếu Call Stack trống thì sẽ được đưa đến Call Stack để thực thi ( Điều này xảy ra bởi một thứ gọi là vòng lặp sự kiện * Event Loop )
Event Loop :
- Về cơ bản , vòng lặp sự kiện nhận các hàm gọi lại từ Callback Queue và đặt chúng vào Call Stack để chúng có thể được thực thi