Ảnh chụp màn hình mã nguồn JavaScript | |
Mẫu hình | Multi-paradigm: scripting, object-oriented (prototype-based), imperative, functional |
---|---|
Thiết kế bởi | Brendan Eich |
Nhà phát triển | Netscape Communications Corporation, Mozilla Foundation, Ecma International |
Xuất hiện lần đầu | tháng 5 năm 1995; 29 năm trước |
Phiên bản ổn định | ECMAScript 6
/ 17 tháng 6 năm 2015; 9 năm trước |
Kiểm tra kiểu | dynamic, duck |
Trang mạng | www |
Các bản triển khai lớn | |
Carakan, Chakra, KJS, Nashorn, Rhino, SpiderMonkey, V8 | |
Ảnh hưởng từ | |
Lua, Scheme, Perl, Self, Java, C, Python, AWK, HyperTalk | |
Ảnh hưởng tới | |
ActionScript, AssemblyScript, CoffeeScript, Dart, Haxe, JS++, Objective-J, Opa, TypeScript |
HTML |
---|
|
Comparisons |
|
JavaScript, theo phiên bản hiện tại, là một ngôn ngữ lập trình dựa trên các ý tưởng nguyên mẫu. Được sử dụng phổ biến cho các trang web (phía người dùng) cũng như phía máy chủ (với Node.js), ngôn ngữ này được phát triển bởi Brendan Eich tại Netscape dưới tên gọi ban đầu Mocha, sau đó đổi thành LiveScript, và cuối cùng là JavaScript. Mặc dù cú pháp của nó tương tự Java, nó gần gũi với Self hơn là Java. Phần mở rộng tập tin mã nguồn JavaScript thường thấy là .js.
Phiên bản mới nhất hiện tại của JavaScript là ECMAScript 12. ECMAScript là phiên bản chuẩn hóa của JavaScript. Trình duyệt Mozilla phiên bản 1.8 beta 1 hỗ trợ không đầy đủ E4X - phần mở rộng cho JavaScript hỗ trợ làm việc với XML, được chuẩn hóa trong ECMA-357.
Java, JavaScript và JScript
Khi Netscape bắt đầu tích hợp Java vào trình duyệt của mình, LiveScript đã được đổi tên thành JavaScript nhằm thu hút sự chú ý, vì lúc đó Java đang nổi như cồn. JavaScript được thêm vào trình duyệt Netscape bắt đầu từ phiên bản 2.0b3 vào tháng 12 năm 1995. Trái với suy nghĩ phổ biến, JavaScript không phải là phiên bản kế thừa của Java. Nó chỉ mượn tên gọi từ Java. JavaScript bao gồm hai mảng: client-server, thực hiện lệnh trên máy của người dùng và web-server.
Sau khi JavaScript thành công, Microsoft đã phát triển JScript, một ngôn ngữ tương thích với JavaScript và có cùng ứng dụng. JScript được tích hợp vào trình duyệt Internet Explorer từ phiên bản 3.0 phát hành vào tháng 8 năm 1996.
DOM (Document Object Model), thường liên kết với JavaScript, thực tế không phải là một phần của chuẩn ECMAScript. DOM là một chuẩn riêng biệt, liên quan chặt chẽ đến XML.
Ứng dụng
JavaScript là ngôn ngữ lập trình dựa trên nguyên mẫu với cú pháp phát triển từ C. Tương tự như C, JavaScript có các từ khóa riêng, vì vậy nó gần như không thể mở rộng thêm.
Giống như C, JavaScript không có hệ thống nhập/xuất (input/output) riêng biệt. Trong khi C dựa vào thư viện nhập/xuất chuẩn, JavaScript phụ thuộc vào phần mềm ngôn ngữ tích hợp để thực hiện các thao tác nhập/xuất.
Trên các trình duyệt, JavaScript được sử dụng rộng rãi để tạo các trang web động và các hiệu ứng hình ảnh thông qua DOM. Nó thực hiện những tác vụ không thể chỉ bằng HTML, như kiểm tra thông tin nhập vào hay tự động thay đổi hình ảnh. Tại Việt Nam, JavaScript còn được dùng để xây dựng bộ gõ tiếng Việt, giống như bộ gõ trên Wikipedia tiếng Việt. Tuy nhiên, vì mỗi trình duyệt có cách áp dụng JavaScript khác nhau và không hoàn toàn theo chuẩn W3C DOM, lập trình viên thường phải viết nhiều phiên bản của cùng một mã nguồn để đảm bảo hoạt động trên nhiều trình duyệt. Các công nghệ nổi bật sử dụng JavaScript để tương tác với DOM bao gồm DHTML, Ajax và SPA.
Ngoài trình duyệt, JavaScript còn được sử dụng trong các tập tin PDF của Adobe Acrobat và Adobe Reader. Nó cũng điều khiển Dashboard trên hệ điều hành Mac OS X phiên bản 10.4. Công nghệ kịch bản linh hoạt (active scripting) của Microsoft hỗ trợ JScript như một ngôn ngữ kịch bản cho hệ điều hành. JScript.NET, một phiên bản nâng cấp của JScript, tương thích với CLI và có thêm nhiều tính năng lập trình hướng đối tượng.
Kể từ khi Node.js ra mắt vào năm 2009, JavaScript đã trở nên phổ biến hơn như một ngôn ngữ đa nền tảng, có thể chạy trên cả môi trường máy chủ và môi trường nhúng.
Mỗi ứng dụng này đều cung cấp một mô hình đối tượng riêng biệt, cho phép tương tác với môi trường chủ, với phần lõi là ngôn ngữ lập trình JavaScript gần như đồng nhất.
Các thành phần cú pháp chính
Khoảng trắng
Dấu cách, tab và ký tự dòng mới bên ngoài một chuỗi ký tự được gọi là khoảng trắng. Khác với C, khoảng trắng trong JavaScript có thể ảnh hưởng trực tiếp đến ý nghĩa của câu lệnh. Với phương pháp 'tự động thêm dấu chấm phẩy', bất kỳ dòng JavaScript nào phù hợp sẽ được coi là một câu lệnh hợp lệ (như thể có dấu chấm phẩy trước ký tự dòng mới).
Mặc dù dấu chấm phẩy trước khi kết thúc một dòng JavaScript thường không cần thiết để mã nguồn hoạt động chính xác, nhưng việc sử dụng dấu chấm phẩy sau mỗi câu lệnh sẽ làm cho mã nguồn dễ đọc hơn. Do đặc thù của JavaScript - thường được sử dụng trên các trang web, kích thước mã nguồn là yếu tố quan trọng. Một số công cụ có thể giảm kích thước mã nguồn JavaScript bằng cách loại bỏ khoảng trắng không cần thiết, vì vậy để các công cụ này hoạt động chính xác, lập trình viên cần thêm dấu chấm phẩy vào cuối mỗi câu lệnh.
Chú thích
Cú pháp chú thích trong JavaScript tương tự như trong C++. Lập trình viên có thể tạo chú thích nhiều dòng bằng cách đặt chú thích giữa các ký tự /* và */ hoặc sử dụng // để chú thích từ ký tự // đến hết dòng.
// Đây là chú thích một dòng. /* Đây là chú thích nhiều dòng. Đây là chú thích 1 Đây là chú thích 2 */
Biến
Trong JavaScript, lập trình viên không cần phải khai báo biến trước khi sử dụng. Có ba cách để định nghĩa biến trong JavaScript:
// Đối với ECMAScript 5 và các phiên bản trước var tên_biến // Đối với ECMAScript 6 trở đi let ten_bien const ten_hang // giá trị của biến khai báo bằng const không thể thay đổi
Ngoài việc gán giá trị trực tiếp cho biến để sử dụng, lập trình viên có thể không cần khai báo biến với cú pháp var. Những biến này sẽ được coi là biến toàn cục và có thể được sử dụng trên toàn trang web. Biến được khai báo bằng var bên trong một hàm chỉ có thể được sử dụng trong hàm đó và sẽ là biến cục bộ của hàm.
Kể từ ECMAScript 6, có thể khai báo biến với let và const, cho phép xác định biến có thể thay đổi hoặc không thay đổi được.
Toán tử
Toán tử là các ký hiệu xác định phép toán sẽ thực hiện trên giá trị của biến và các biểu thức. JavaScript cung cấp nhiều loại toán tử khác nhau để thực hiện các phép tính từ đơn giản đến phức tạp.
Các toán tử trong JavaScript được phân loại thành sáu nhóm chính dựa trên chức năng của chúng với các toán hạng. Các nhóm này bao gồm toán tử số học, toán tử so sánh, toán tử luận lý, toán tử thao tác bit, toán tử gán và toán tử đặc biệt.
Các toán tử số học
Các toán tử số học là những toán tử nhị phân thực hiện các phép toán cơ bản giữa hai toán hạng. Chúng nằm giữa hai toán hạng, giúp thực hiện các phép toán với số và chuỗi. Bao gồm các toán tử: + (cộng), - (trừ), * (nhân), / (chia), % (chia lấy dư).
Ví dụ cụ thể:
var result; result = 2 + 4; // result = 6 result = 2 - 4; // result = -2 result = 2 * 4; // result = 8 result = 2 / 4; // result = 0.5 result = 2 % 4; // result = 2
Các toán tử tăng và giảm
Các toán tử tăng và giảm là loại toán tử đơn hạng, chỉ áp dụng cho một toán hạng duy nhất. Toán tử tăng làm tăng giá trị lên 1, còn toán tử giảm làm giảm giá trị xuống 1. Chúng có thể được đặt trước hoặc sau toán hạng. Các toán tử này bao gồm: ++ (tăng), -- (giảm).
Ví dụ minh họa:
var x = 2; var y; y = x++; // x = 3, y = 2 y = ++x; // x = 3, y = 3 y = x--; // x = 1, y = 2 y = --x; // x = 1, y = 1
Các toán tử quan hệ
Toán tử quan hệ được sử dụng để so sánh hai giá trị. Sau khi so sánh, chúng trả về giá trị true (đúng) hoặc false (sai). Các toán tử quan hệ bao gồm: == (bằng nhau), != (khác nhau), === (bằng nhau và cùng kiểu), !== (khác nhau và khác kiểu), > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng).
Ví dụ minh họa:
var result; result = 3 == '3'; // result = true result = 3 != 3; // result = false result = 3 === '3'; // result = false result = 3 !== '3'; // result = true result = 3 > 4; // result = false result = 3 < 4; // result = true result = 3 >= 3; // result = true result = 3 <= 4; // result = true
Các toán tử luận lý
Toán tử luận lý là các toán tử nhị phân thực hiện các phép toán logic giữa hai toán hạng. Chúng thuộc loại toán tử quan hệ vì kết quả trả về là giá trị boolean. Các toán tử bao gồm: && (và), || (hoặc), ! (phủ định).
Ví dụ cụ thể:
var x = 2, y = 5; var result; result = (x == 3) && (y == 5); // result = false result = (x == 3) || (y == 5); // result = true result = !(x == 3); // result = true
Các toán tử đặc biệt
Toán tử điều kiện, hay còn gọi là toán tử ba ngôi, có cú pháp như sau:
điều_kiện ? biểu_thức_đúng : biểu_thức_sai;
Toán tử này trả về giá trị của biểu_thức_đúng nếu điều_kiện là true, ngược lại, nó sẽ trả về biểu_thức_sai.
Điều khiển luồng chương trình
Câu lệnh if... else
Cú pháp của if... else cho phép phân nhánh dựa trên điều kiện. Cấu trúc này tương tự như việc nói rằng nếu x xảy ra thì thực hiện y, ngược lại thực hiện z. Bạn có thể lồng các câu lệnh if... else vào nhau.
Cú pháp:
if (biểu_thức_1) { khối lệnh thực hiện nếu biểu thức 1 đúng; } else if (biểu_thức_2) { khối lệnh thực hiện nếu biểu thức 1 sai và biểu thức 2 đúng; } else { khối lệnh thực hiện nếu cả hai biểu thức trên đều sai; }
Ví dụ minh họa:
var x = prompt('Nhập giá trị cho x:'); x = parseFloat(x); if (!isNaN(x)) { if (x > 0) { alert('x lớn hơn 0'); } else if (x == 0) { alert('x bằng 0'); } else { alert('x nhỏ hơn 0'); } } else { alert('Giá trị nhập vào không phải là số'); }
Đoạn mã trên mở một hộp thoại yêu cầu người dùng nhập một giá trị số, sau đó thông báo giá trị đó lớn hơn 0, bằng 0, hoặc nhỏ hơn 0.
Câu lệnh switch... case
Cú pháp switch cũng là một phương pháp điều kiện tương tự như if... else và toán tử ba ngôi. Tuy nhiên, switch thường được sử dụng khi cần so sánh với nhiều giá trị khác nhau. Cách sử dụng switch như sau:
switch (biểu_thức_điều_kiện) { case kết_quả_1: thực hiện khối lệnh nếu biểu_thức_điều_kiện bằng kết_quả_1; break; case kết_quả_2: thực hiện khối lệnh nếu biểu_thức_điều_kiện bằng kết_quả_2; break; default: thực hiện khối lệnh nếu biểu_thức_điều_kiện không khớp với các kết_quả trên; break; }
Mỗi khối lệnh trong các nhánh so sánh (ngoại trừ nhánh default) đều cần có lệnh break để kết thúc.
Vòng lặp
Vòng lặp while
Vòng lặp while được sử dụng để lặp đi lặp lại một khối lệnh cho đến khi điều kiện kiểm tra trở thành false. Cần chú ý phải có điều kiện thoát cho vòng lặp (biểu thức điều kiện phải trở thành false), nếu không, vòng lặp sẽ trở thành vòng lặp vô hạn, dẫn đến lỗi trong mã nguồn. Vòng lặp while thường dùng khi số lần lặp không được xác định trước. Cú pháp của vòng lặp while như sau:
while (biểu_thức_điều_kiện) { thực hiện khối lệnh khi biểu_thức_điều_kiện là true; }
Vòng lặp do... while
Vòng lặp do... while có cách hoạt động gần giống như vòng lặp while. Điểm khác biệt là nếu điều kiện kiểm tra ban đầu là false, vòng lặp while sẽ không thực hiện khối lệnh, trong khi vòng lặp do... while đảm bảo khối lệnh được thực hiện ít nhất một lần. Ví dụ:
do { alert('do... while'); // Thông báo 'do... while' chỉ xuất hiện một lần } while (0 > 1);
Cú pháp của vòng lặp do... while được trình bày như sau:
do { thực_hiện khối lệnh; } while (biểu_thức_điều_kiện);
Vòng lặp for
Vòng lặp for được áp dụng khi bạn biết số lần cần lặp. Dưới đây là cú pháp của vòng lặp for:
for (biểu_thức_khởi_tạo; biểu_thức_điều_kiện; biểu_thức_thay_đổi_giá_trị) { Thực_hiện khối lệnh trong mỗi vòng; }
Khi bắt đầu vòng lặp for, bạn cần khởi tạo một biến bằng biểu_thức_khởi_tạo. Nếu biểu_thức_điều_kiện trả về true, vòng lặp sẽ tiếp tục thực hiện khối lệnh và sau đó áp dụng biểu_thức_thay_đổi_giá_trị. Quy trình này lặp đi lặp lại cho đến khi biểu_thức_điều_kiện trả về false, lúc đó vòng lặp kết thúc.
Vòng lặp for... in
Vòng lặp for... in được sử dụng để duyệt qua từng thuộc tính của một đối tượng hoặc từng phần tử của một mảng. Cú pháp của vòng lặp này như sau:
for (biến in đối_tượng) { thực_hiện khối lệnh với biến đại_diện cho từng thuộc_tính của đối_tượng; }
Hàm
Hàm là một khối các câu lệnh có thể nhận một hoặc nhiều đối số (có thể không có đối số) và thường có tên (mặc dù trong JavaScript hàm không nhất thiết phải có tên). Hàm có khả năng trả về một giá trị. Dưới đây là cú pháp của hàm:
// Trước ECMAScript 5 function tênHàm(thamSố1, thamSố2) { // Các câu lệnh } // Từ ECMAScript 6 trở đi const tênHàm = (thamSố1, thamSố2)=>{ // Hàm kiểu arrow function // Các câu lệnh } // Thực thi tênHàm(1, 2); // Gọi hàm tênHàm với hai tham số 1 và 2 tương ứng với thamSố1 và thamSố2 tênHàm(1); // Gọi hàm tênHàm với thamSố1 bằng 1 và thamSố2 là undefined
Trong JavaScript, khi gọi hàm, không cần phải cung cấp số lượng tham số giống như khi khai báo hàm. Nếu số lượng tham số ít hơn so với định nghĩa, các tham số thiếu sẽ có giá trị mặc định là undefined.
Các kiểu dữ liệu cơ bản sẽ được truyền vào hàm theo giá trị, trong khi đối tượng sẽ được truyền theo tham chiếu.
Hàm là đối tượng bậc nhất trong JavaScript. Mọi hàm đều là đối tượng của nguyên mẫu Function. Hàm có thể được tạo và sử dụng trong các phép toán gán như bất kỳ đối tượng nào khác và cũng có thể được sử dụng làm tham số cho các hàm khác. Điều này cho phép JavaScript hỗ trợ hàm bậc cao. Ví dụ:
Array.prototype.fold = function (giáTrị, hàm) { var kếtQuả = giáTrị; for (var i = 0; i < this.length; i++) { kếtQuả = hàm(kếtQuả, this[i]); } return kếtQuả; } var tổng = [1,2,3,4,5,6,7,8,9,10].fold(0, function (a, b) { return a + b; });
Mã nguồn trên sẽ trả về kết quả là 55.
Do hàm trong JavaScript là đối tượng, bạn có thể tạo ra các hàm ẩn danh như sau:
function() { nội_dung hàm; }
Dưới đây là một ví dụ về việc sử dụng hàm ẩn danh trong JavaScript:
document.onkeypress = function(e) { alert('Bạn vừa nhấn phím trên bàn phím'); }
Hàm này sẽ hiển thị một thông báo khi các phím trên bàn phím kích hoạt sự kiện onkeypress.
Theo mặc định, tất cả các thuộc tính của đối tượng đều có thể truy cập công khai (public). JavaScript không hỗ trợ khái niệm thành phần riêng hay bảo vệ (private và protected), nhưng bạn có thể giả lập những tính năng này.
Mảng
Trong JavaScript, mảng là một bảng liên kết các chỉ mục với giá trị. Mặc dù mọi đối tượng đều có thể liên kết chỉ mục đến giá trị, nhưng mảng là một loại đối tượng đặc biệt với nhiều tính năng xử lý chỉ mục và dữ liệu (như push, join, v.v.)
Mảng trong JavaScript có thuộc tính length. Thuộc tính length luôn luôn lớn hơn chỉ mục lớn nhất trong mảng một đơn vị. Trong nhiều ngôn ngữ lập trình, thuộc tính như length thường chỉ đọc, nhưng trong JavaScript, lập trình viên có thể thay đổi thuộc tính length để làm cho mảng lớn hơn hoặc nhỏ hơn, và xóa các chỉ mục vượt quá giá trị mới của length.
Trong JavaScript, mảng là kiểu dữ liệu không liên tục. Ví dụ, với một mảng như sau:
var test = new Array(); test[2] = 0; test[100] = 5;
Trong trường hợp này, mặc dù mảng chứa chỉ mục lên đến 100, nhưng chỉ có hai phần tử với giá trị 0 và 5 chiếm bộ nhớ. Tuy nhiên, thuộc tính length sẽ là 101 vì chỉ mục lớn nhất trong mảng là 100.
Mảng cũng có thể được khai báo một cách ngắn gọn, phương pháp này thường được ưa chuộng:
var ary = [1, 2, 3];
Một vài ví dụ về mảng:
var test = new Array(10); // Khởi tạo mảng với 10 chỉ mục var test2 = new Array(0, 1, 2,, 3); // Khởi tạo mảng với 4 giá trị và 5 chỉ mục var test3 = new Array(); test3['1'] = 123; // Cú pháp hoàn toàn hợp lệ
Bạn cũng có thể định nghĩa cấu trúc bằng cách sử dụng đối tượng như sau:
var myStructure = { name: { first: 'Mel', last: 'Smith' }, age: 33, hobbies: [ 'chess', 'jogging' ] };
Cú pháp định nghĩa cấu trúc bằng đối tượng ở trên tương tự như chuẩn JSON.
Đối tượng
Trong JavaScript, đối tượng là một thực thể có tên với các thuộc tính liên kết tới giá trị, hàm, hoặc thậm chí là các đối tượng khác. Điều này có nghĩa là, đối tượng trong JavaScript hoạt động giống như một mảng kết hợp (associative array), tương tự như mảng trong PHP hoặc từ điển trong Python, PostScript hay Smalltalk.
JavaScript cung cấp một số đối tượng mặc định, bao gồm mảng (Array), boolean (Boolean), ngày tháng (Date), hàm (Function), toán học (Math), số (Number), đối tượng (Object), biểu thức tìm kiếm (RegExp), chuỗi (String), symbol (Symbol). Ngoài ra, còn có các đối tượng để truy cập và điều khiển các yếu tố của trình duyệt như window, history, navigator, location, screen, document, form, v.v.
Kể từ ECMAScript 6, JavaScript hỗ trợ class
và interface
giúp việc lập trình hướng đối tượng trở nên dễ dàng hơn.
Các thuộc tính hoặc phương thức có thể được thêm hoặc xóa khỏi đối tượng sau khi nó được tạo. Để áp dụng các thay đổi cho tất cả các đối tượng tạo từ cùng một hàm khởi tạo, bạn có thể sử dụng thuộc tính prototype của hàm khởi tạo để truy cập đối tượng nguyên mẫu. JavaScript cũng tự động giải phóng bộ nhớ cho các đối tượng không còn được sử dụng.
Ví dụ minh họa:
function samplePrototype() { this.attribute1 = 'someValue'; // Thêm thuộc tính attribute1 vào đối tượng this.attribute2 = 234; // Thêm thuộc tính attribute2 vào đối tượng this.function1 = testFunction; // Thêm hàm function1 vào đối tượng } function testFunction() { alert(this.attribute2); // Hiển thị giá trị 234 } var sampleObject = new samplePrototype; // Tạo một đối tượng mới sampleObject.function1 (); // Gọi hàm function1 của đối tượng sampleObject sampleObject.attribute3 = 123; // Thêm thuộc tính attribute3 vào đối tượng sampleObject delete sampleObject.attribute1; // Xóa thuộc tính attribute1 khỏi đối tượng delete sampleObject; // Xóa đối tượng sampleObject
Qu
Tùy thuộc vào môi trường phát triển, việc sửa lỗi JavaScript có thể gặp khó khăn. Đối với các trang web, các trình duyệt như Mozilla hay Firefox có công cụ gỡ lỗi mạnh mẽ (Venkman) và một công cụ kiểm tra DOM đi kèm.
Các phiên bản JavaScript mới hơn (như trên Internet Explorer 5 và Netscape 6) hỗ trợ mệnh đề quản lý lỗi try... catch... finally, tương tự như trong Java, giúp lập trình viên xử lý lỗi trong thời gian chạy hoặc quản lý ngoại lệ từ cú pháp throw. Cú pháp của mệnh đề này như sau:
try { Khối lệnh có thể gây ra lỗi; } catch (error) { Khối lệnh được thực hiện khi có lỗi; } finally { Khối lệnh luôn được thực hiện; }
Trong cú pháp trên, đối tượng error là một Error với hai thuộc tính chính theo chuẩn ECMAScript 3:
- error.message: Thông báo chi tiết về lỗi
- error.name: Tên của lỗi
Tuy nhiên, mỗi trình duyệt có thể sử dụng phiên bản JavaScript khác nhau và không phải trình duyệt nào cũng hoàn toàn tuân thủ chuẩn ECMAScript 3. Ví dụ, Internet Explorer 6 SP 1 bổ sung thêm hai thuộc tính:
- error.number: Mã số của lỗi
- error.description: Thông báo chi tiết về lỗi
Mozilla Firefox 1.07 cung cấp thêm ba thuộc tính mới:
- error.fileName: Tên của tập tin gây ra lỗi
- error.lineNumber: Số dòng chứa lỗi
- error.stack: Chuỗi ký tự tổng hợp thông tin từ các thuộc tính trên
Phần finally là tùy chọn. Bạn có thể sử dụng try... catch mà không cần finally.
Phạm vi ảnh hưởng của lỗi
Các ngôn ngữ lập trình kịch bản thường dễ bị lỗi và mỗi trình duyệt hay ứng dụng JavaScript có cách xử lý khác nhau, khiến việc sửa lỗi trở nên khó khăn và tốn thời gian. Trong các trang HTML có cả thẻ script và các đoạn mã HTML khác, lỗi cú pháp có thể được phát hiện dễ dàng hơn nếu bạn đặt mỗi hàm vào một thẻ script riêng biệt hoặc sử dụng nhiều tệp .js khác nhau. Cách này cũng giúp tránh ảnh hưởng đến toàn bộ trang web khi một đoạn mã gặp lỗi.
Ngôn ngữ dựa trên JavaScript
ActionScript, ngôn ngữ kịch bản được sử dụng trong Macromedia Flash, có cú pháp tương tự JavaScript nhưng mô hình đối tượng của nó lại hoàn toàn khác biệt.
JSON (JavaScript Object Notation) là một định dạng chia sẻ dữ liệu linh hoạt và đa năng.
JavaScript OSA (JavaScript cho OSA, hay JSOSA) là một ngôn ngữ kịch bản dựa trên bản JavaScript SpiderMonkey, được sử dụng trên trình duyệt Mozilla 1.5 cho máy tính Macintosh. Đây là phần mềm miễn phí phát hành bởi Late Night Software, cho phép tương tác với hệ điều hành và các ứng dụng khác qua đối tượng MacOS. Mặc dù có một số điểm khác biệt, JavaScript OSA gần như giống hệt JavaScript SpiderMonkey và cung cấp một lựa chọn bổ sung cho lập trình viên ngoài AppleScript.
Trước đây, ECMAScript cũng đã được áp dụng trong chuẩn VRML97 để dựng cảnh VRML.
Các thư viện JavaScript nổi bật
- Framework Prototype kết hợp cùng thư viện scriptaculous.
- Thư viện jQuery giúp giảm thời gian viết mã và cung cấp các hàm tương tác với DOM trên các trình duyệt khác nhau.
- Nodejs, nền tảng cho phép chạy JavaScript bên ngoài trình duyệt.
- ReactJS, thư viện mã nguồn mở miễn phí hỗ trợ phát triển giao diện người dùng.
- CorbaScript
- C++
- DHTML
- C
- HTML
- CSS
- React Native
- Nigel McFarlane: Rapid Application Development with Mozilla, Prentice Hall Professional Technical References, ISBN 0-13-142343-6
- David Flanagan, Paula Ferguson: JavaScript: The Definitive Guide, O'Reilly & Associates, ISBN 0-596-00048-0
- Danny Goodman, Scott Markel: JavaScript and DHTML Cookbook, O'Reilly & Associates, ISBN 0-596-00467-2
- Danny Goodman, Brendan Eich: JavaScript Bible, Wiley, John & Sons, ISBN 0-7645-3342-8
- Andrew H. Watt, Jinjer L. Simon, Jonathan Watt: Teach Yourself JavaScript in 21 Days, Pearson Education, ISBN 0-672-32297-8
- Thomas A. Powell, Fritz Schneider: JavaScript: The Complete Reference, McGraw-Hill Companies, ISBN 0-07-219127-9
- Scott Duffy: How to do Everything with JavaScript, Osborne, ISBN 0-07-222887-3
- Andy Harris, Andrew Harris: JavaScript Programming, Premier Press, ISBN 0-7615-3410-5
- Joe Burns, Andree S. Growney, Andree Growney: JavaScript Goodies, Pearson Education, ISBN 0-7897-2612-2
- Gary B. Shelly, Thomas J. Cashman, William J. Dorin, Jeffrey Quasney: JavaScript: Complete Concepts and Techniques, Course Technology, ISBN 0-7895-6233-2
- Nick Heinle, Richard Koman: Designing with JavaScript, O'Reilly & Associates, ISBN 1-56592-300-6
- Sham Bhangal, Tomasz Jankowski: Foundation Web Design: Essential HTML, JavaScript, CSS, PhotoShop, Fireworks, and Flash, APress L. P., ISBN 1-59059-152-6
Các liên kết hữu ích
Tài liệu tham khảo
Cơ bản về JavaScript
- Hướng dẫn JavaScript Lưu trữ ngày 15 tháng 07 năm 2006 tại Wayback Machine (tiếng Anh)
- Những hướng dẫn JavaScript phổ biến nhất Lưu trữ ngày 01 tháng 05 năm 2006 tại Wayback Machine (tiếng Anh)
- Tài liệu về ngôn ngữ JavaScript của Mozilla
- Tài liệu SpiderMonkey (Engine JavaScript của Mozilla) Lưu trữ ngày 08 tháng 04 năm 2007 tại Wayback Machine
- JavaScript Kit
- Hướng dẫn JavaScript từ HTML Source
- Hướng dẫn JavaScript trên W3Schools.com
Code mẫu dễ sử dụng (Copy & Paste)
- JavaScriptBank.com (tiếng Anh) & (tiếng Việt)
- DynamicDrive.com (tiếng Anh)
- JavascriptKit.com (tiếng Anh)
Thư viện phổ biến
- Prototype
- jQuery
Ngôn ngữ lập trình | |
---|---|
Dùng cho kỹ nghệ |
|
Dùng trong giảng dạy |
|
Có giá trị lịch sử |
|