JavaScript là ngôn ngữ kịch bản được sử dụng rộng rãi nhất trên Trái đất. Và nó có hệ sinh thái thư viện lớn nhất so với bất kỳ ngôn ngữ lập trình nào.
JavaScript là ngôn ngữ cốt lõi của web và là ngôn ngữ lập trình duy nhất có thể chạy trong tất cả các trình duyệt web chính.
Đáng chú ý, JavaScript không liên quan đến Java. Hãy xem JavaScript: Ngôn ngữ lập trình bị hiểu sai nhiều nhất trên thế giới.
Tên chính thức của JavaScript là ECMAScript được xác định theo Tiêu chuẩn ECMA-262.
Nếu bạn muốn tìm hiểu thêm về ngôn ngữ JavaScript và tại sao nó lại được sử dụng rộng rãi như vậy, hãy đọc bài viết của Quincy Larson – Tôi nên học ngôn ngữ lập trình nào trước? – hoặc xem video đầy cảm hứng này từ Preethi Kasireddy.
freeCodeCamp có một hướng dẫn chuyên sâu về JavaScript trên YouTube sẽ dạy cho bạn tất cả các nguyên tắc cơ bản chỉ trong 3 giờ.

Một số hướng dẫn JavaScript hay khác:
Người giới thiệu
JavaScript nhanh
thử thách
hướng dẫn
bài tập
Biên tập viên
Blog
Podcast
Video hướng dẫn
Sách
6 cuốn sách về JavaScript của Kyle Simpson, từ cơ bản đến nâng cao.
Phần giới thiệu kỹ lưỡng, tuyệt vời về những điều cơ bản và tính năng của JavaScript, hoàn chỉnh với mã tương tác trong trình duyệt.
Hướng dẫn khá chi tiết về Lập trình chức năng trong JavaScript
Công cụ JavaScript độc lập
Mozilla’s SpiderMonkey, công cụ JavaScript đầu tiên từng được viết, hiện được sử dụng trong Mozilla Firefox.
V8, công cụ JavaScript của Google, được sử dụng trong Google Chrome.
Google Apps Script, trình thông dịch phía máy chủ/dựa trên đám mây cung cấp khả năng kiểm soát “giống như vĩ mô” có lập trình đối với các tài liệu và dịch vụ Google Apps.
Node.js, được xây dựng trên V8, một nền tảng cho phép các ứng dụng phía máy chủ được viết bằng JavaScript.
Windows bao gồm JScript, một biến thể JavaScript trong Windows Script Host.
Chakra, một nhánh của Jscript, được phát triển bởi Microsoft và được sử dụng trong trình duyệt Edge của họ.
Mozilla cũng cung cấp Rhino, một triển khai JavaScript được xây dựng trong Java, thường được nhúng vào các ứng dụng Java để cung cấp tập lệnh cho người dùng cuối.
WebKit (ngoại trừ dự án Chromium) triển khai công cụ JavaScriptCore.
Khung JavaScript
Các Khung JavaScript được sử dụng thường xuyên nhất là React JS, Angular JS, jQuery và NodeJS. Để biết thêm chi tiết theo liên kết này.
Giống như tất cả các ngôn ngữ lập trình, JavaScript có những ưu điểm và nhược điểm nhất định cần xem xét. Nhiều trong số này có liên quan đến cách JavaScript thường được thực thi trực tiếp trong trình duyệt của khách hàng. Nhưng hiện có nhiều cách khác để sử dụng JavaScript cho phép nó có cùng lợi ích của các ngôn ngữ phía máy chủ.
Ưu điểm của Javascript
- Tốc độ, vận tốc – JavaScript có xu hướng rất nhanh vì nó thường chạy ngay trong trình duyệt của khách hàng. Miễn là nó không yêu cầu tài nguyên bên ngoài, JavaScript sẽ không bị chậm lại bởi các lệnh gọi đến máy chủ phụ trợ. Ngoài ra, tất cả các trình duyệt chính đều hỗ trợ biên dịch JIT (đúng lúc) cho JavaScript, nghĩa là không cần biên dịch mã trước khi chạy.
- Sự đơn giản – Cú pháp của JavaScript được lấy cảm hứng từ Java và tương đối dễ học so với các ngôn ngữ phổ biến khác như C++.
- Phổ biến – JavaScript ở khắp mọi nơi trên web và với sự ra đời của Node.js, JavaScript ngày càng được sử dụng nhiều hơn trên phần phụ trợ. Có vô số tài nguyên để học JavaScript. Cả StackOverflow và GitHub đều cho thấy số lượng dự án sử dụng JavaScript ngày càng tăng và sức hút mà nó đạt được trong những năm gần đây dự kiến sẽ tăng lên.
- khả năng tương tác – Không giống như PHP hoặc các ngôn ngữ kịch bản khác, JavaScript có thể được chèn vào bất kỳ trang web nào. JavaScript có thể được sử dụng trong nhiều loại ứng dụng khác nhau nhờ hỗ trợ các ngôn ngữ khác như Pearl và PHP.
- Tải máy chủ – JavaScript là phía máy khách, do đó, nó làm giảm nhu cầu về máy chủ nói chung và các ứng dụng đơn giản có thể không cần máy chủ.
- giao diện phong phú – JavaScript có thể được sử dụng để tạo các tính năng như kéo và thả và các thành phần như thanh trượt, tất cả đều giúp nâng cao đáng kể giao diện người dùng và trải nghiệm của một trang web.
- Chức năng mở rộng – Các nhà phát triển có thể mở rộng chức năng của các trang web bằng cách viết các đoạn mã JavaScript cho các tiện ích bổ sung của bên thứ ba như Greasemonkey.
- Tính linh hoạt – Có nhiều cách để sử dụng JavaScript thông qua máy chủ Node.js. Nếu bạn khởi động Node.js bằng Express, hãy sử dụng cơ sở dữ liệu tài liệu như MongoDB và sử dụng JavaScript trên giao diện người dùng cho máy khách, thì có thể phát triển toàn bộ ứng dụng JavaScript từ trước ra sau chỉ bằng JavaScript.
- cập nhật – Kể từ khi ECMAScript 5 ra đời (đặc tả tập lệnh mà JavaScript dựa vào), ECMA International đã chuyên tâm cập nhật JavaScript hàng năm. Cho đến nay, chúng tôi đã nhận được hỗ trợ trình duyệt cho ES6 vào năm 2017 và mong muốn ES7 sẽ được hỗ trợ trong tương lai.
Nhược điểm của Javascript
- Bảo mật phía máy khách – Vì mã JavaScript được thực thi ở phía máy khách nên đôi khi lỗi và sơ sót có thể bị lợi dụng cho mục đích xấu. Do đó, một số người chọn tắt hoàn toàn JavaScript.
- Hỗ trợ trình duyệt – Mặc dù các tập lệnh phía máy chủ luôn tạo ra cùng một đầu ra, nhưng các trình duyệt khác nhau đôi khi diễn giải mã JavaScript khác nhau. Ngày nay, sự khác biệt là rất nhỏ và bạn không cần phải lo lắng về điều đó miễn là bạn kiểm tra tập lệnh của mình trong tất cả các trình duyệt chính.
ES6
Phiên bản thứ 6 của ECMAScript được gọi là ES6.
Nó còn được gọi là ES2015.
Những thay đổi bổ sung rất nhiều cú pháp cho phép các nhà phát triển tạo ứng dụng theo phong cách hướng đối tượng.
Ví dụ về ES5:
var User = function () {
function User(name) {
this._name = name;
}
User.prototype.getName = function getName(x) {
return 'Mr./Mrs. ' + this._name;
};
return User;
}();
Ví dụ về ES6:
class User {
constructor(name) {
this._name = name
}
getName() {
return `Mr./Mrs. ${this._name}`
}
}
Rất nhiều tính năng cú pháp mới đã được giới thiệu bao gồm:
- các lớp học
- mô-đun
- khuôn mẫu
- vòng lặp for/of
- biểu thức trình tạo
- chức năng mũi tên
- bộ sưu tập
- lời hứa
Ngày nay, hầu hết các tính năng đều có sẵn trong tất cả các trình duyệt phổ biến. Bảng tương thích chứa tất cả thông tin về tính khả dụng của tất cả các trình duyệt hiện đại.
Thông thường, các tính năng mới xuất hiện là một phần của ES7 kế nhiệm. Một cách phổ biến là dịch JavaScript hiện đại (ES6, ES7 và các đề xuất thử nghiệm khác) sang ES5. Điều này đảm bảo rằng các trình duyệt cũ cũng có thể thực thi mã. Có những công cụ như Babel biến JavaScript mới thành ES5.
Ngoài đường cú pháp đến từ các tiêu chuẩn ECMAScript, còn có các tính năng yêu cầu Polyfill. Thông thường chúng là cần thiết vì việc triển khai toàn bộ lớp/phương thức đã được thêm vào tiêu chuẩn.
Khởi tạo đối tượng
Trong JavaScript và hầu hết các ngôn ngữ khác, một đối tượng chứa một loạt các thuộc tính, là một cặp khóa, giá trị. Có nhiều tùy chọn có sẵn cho bạn khi bạn cần xây dựng một đối tượng.
Khởi tạo một biến đối tượng
Bạn có thể tạo một đối tượng với các thuộc tính được xác định trước như sau:
let myObject = {
name: "Dave",
age: 33
}
Tạo một đối tượng rỗng
Điều này tạo ra một đối tượng trống bên trong biến myObject của chúng ta:
let myObject = new Object();
Khi bạn muốn thêm các thuộc tính vào đối tượng của mình, bạn chỉ cần sử dụng ký hiệu dấu chấm hoặc ký hiệu ngoặc với tên thuộc tính bạn chọn:
myObject.name = "Johnny Mnemonic"
myObject["age"] = 55
Sử dụng hàm tạo
Bạn có thể định nghĩa một hàm tạo mà bạn có thể sử dụng để tạo các đối tượng của mình:
function Kitten(name, cute, color) {
this.name = name,
this.cute = cute,
this.color = color
}
Bạn có thể định nghĩa một biến chứa phần khởi tạo của đối tượng này bằng cách gọi hàm khởi tạo:
let myKitten = new Kitten("Nibbles", true, "white")
Object.create()
Phương thức Object.create() (được định nghĩa lần đầu trong ECMAScript 5.1) cho phép bạn tạo các đối tượng. nó cho phép bạn chọn đối tượng nguyên mẫu cho đối tượng mới của mình mà không cần xác định trước hàm tạo.
// Our pre-defined object
let kitten = {
name: "Fluff",
cute: true,
color: "gray"
}
// Create a new object using Object.create(). kitten is used as the prototype
let newKitten = Object.create(kitten)
console.log(newKitten.name) // Will output "Fluff"