Tem plate HTML m à chúng ta đa định nghĩa trong chương 1 (xem phần "Tạo m ột tem plate JavaScript") đã khơng th ậ t sự làm b ấ t cứ điều gì hữu ích ngoại trừ hiển th ị m ột số tẻ:t hcader. Cách duy n h ấ t ir à chúng la cị tn ế làm cno Cxiuơĩig tn n ìi Jav aS crip t thực h iện b ấ t cứ nhứng gì là thêm một số câu lệnh (statem ent).
Một câu lệnh (statem ent) là mục h à n h động cơ bản tro n g b ấ t kỳ mã chương trìn h . T h ậ t ra mỗi câu lệnh yêu cầu máy tín h làm m ột diều gì đĩ. Các câu lệnh cĩ th ể được phân chia th à n h 5 h ạn g mục:
B Conditỉonal (cĩ điều kiện) * Loop (vịng lặp)
* Objects manipiilation (xử lý đối tìỉợng) B Comment
M Expression (biểu thức)
Chương trìn h Jav aS crip t điển hình sử dụng các câu lệnh rơi vào từng hạng mục đĩ. Các câu lệnh bên trong một chương trìn h thường được tổ chức th à n h các hàm và lớp (class), để làm chương trìn h dễ quản lý hơn và p h át triể n hiệu quả hơn. Chương 5 sẽ trìn h bày chi tiế t hơn. Các hàm sẽ được trìn h bày chi tiế t hơn ở phần sau trong chương này và các class sẽ được đề cập trong chương 5.
Chưđng 2: Học nhữoq điểm cơ bản về .JavaScript 37
Thực thỉ mã một cách cĩ điều kiện• • •
Các chương trìn h máy tính hầu như luơn chứa các câu lệnh cĩ điều k iệ n (conditional S t a t e m e n t ) . Cĩ h ai câu lệ n h cĩ điều k iện tro n g JavaS cript: if và switch. Câu lệnh if cho phép chương trìn h chọn một tro n g hai lựa chọn dưa vào hê số ấn định sẵn. Thực tế, bạn cĩ th ể quyết định rá n g nếu trời khĩng mưa thì bạn muốn đi xem trậ n bĩng chàỵ Dĩ nhiên, .lếu trời ưiưíi thì bạị c u \ê \ định ở nhà. Bại) cĩ th ể đưa ra quyếc
định y như th ế trong một chương trìn h JavaS cript bằng m ã sau đây:
fonction stay_or_go (raining) { if (raining == false) {
return “Go to baseball gamé”; } eise {
return “Got to stey home tcdaỵ";
Do (lĩ bạn tná.y các câu iệnh cĩ điều kiện sẽ cho những chương trìn h raột lựa chọn giũte hai hoặ: n h ie j Jự* chọn giống y như b ạ n đưa ra những lựa chọn đĩ tro n g thực tế.
Cầu lệnh if
Phụ thuộc vảo bạn sử dụng nĩ như th ế nào, câu lệnh i f cĩ th ể r ấ t đơn giản hốc r ấ t phức tạp. Oáu lệnh it’cĩ th ế được sử dung bàng những cách sau đây:
Cú pbáp Cống dụng
if (expression) (statements;! Nêu exorpssion lươníỊ giá thành tru<\ thực thi cac ăt.atement.
if (expression 1 (statements 1;) Nếu expression lượng giá thành true, thực tlstì ¡statement 2;i thi statement 1 Nêu khơng thực thi state
ments 2.
if (expression lì IstaternenỤ ].:} Nế;j ('xpression lượng giá thành true, thực else if (expression 2} thi staement 1. Nếu khơng, nếu expression (statement 2} 2 lượng giá thành true, thực thi statement
2. Nếu khơng, thực thi statement 3.
Câu lệnh if lượng giá một biểu thức để quyết định tập hợp câu lệnh nào để thực th i nếu cĩ.
Vì câu lệnh i f mong đợi một biểu thức Boolean (biểu thức lượng giá th à n h true hoặc false), nĩ sẽ cố chuyển đổi các biểu thức của các kiểu dữ liệu khác th à n h true hoặc false).
38 Chướng 2: Học những điểm cơ bản về JavaScript• • • • • • • • • • • • • •
Thủ thuật•
JavaScript đưa ra những giả định chắc chắn khi chuyển đổi từ các kiểu dữ liệu khác thành Boolean. Các chuỗi "true" và "false" lượng giá thành true và falsc Booleans. Các số nguyên 1 và 0 cũng được chuyển đổi thành các Boolean true và falsẹ
Trong th u ậ t ngữ lập trìn h m áy tín h , m ột biểu thức (expression) là một đoạn mã mà khi được lượng sẽ giá trả về một giá trị. Trong JavaScript, những đối tượng sau đây cĩ th ể được sử dụng làm biểu thức.
Biểụ thức Ví dụ
Một biếu if (x) ¡stattìmeiits;)
Một hàm trả về một giá trị if (myfunc(x) {statements;} Một trực kiện if (true) {statements;} Các biến, hàm, và trực kiện if (a > 5) {statements;}
dược kết hợp sử dụng các tốn tử
Thậm chí cùng một câu lệnh if cĩ th ể được viết bằng tối thiểu bốn cách khác nhau, tấ t cả đều hợp lệ: ■ if (expression) Statement; ■ if (expression) Statement; ■ if (expression) {statements;} ■ if (expression) ( síatements; }
Các dạng trê n của câu lệnh if về m ặt kỹ th u ật th ì tương đương. Hai dạng đầu tiên cĩ th ể bao gồm chỉ một câu lệnh. Chú ý rằ n g dạng thứ ba và dạng thứ tư sử dụng các dấu ngoặe cong { và } để bao bọc các câu lệnh. Các câu lệnh được bao bọc trong các dấu ngoặc cong thường được xử lý như một nhĩm được gọi là một khối câu lệnh (Statem ent block).
Câu lệnh if cĩ th ể bao gồm m ột m ệnh đề else tùy chọn, để quyết định giữa m ột trong h ai lựa chọn. Dạng này của câu lệnh đơi khi được gọi là câu lệnh if-else:
if (expression) {statementsl;} else {statements2;}
M ệnh đề else cho phép bạn xác định một câu lệnh hoặc nhĩm câu lệnh m à sẽ được thực th i nếu biểu thức khơng lượng giá th à n h truẹ Chỉ
một m ệnh đề else được cho phép trong bất kỳ câu lệnh if. Lần nữa, câu lệnh cĩ th ể được sử dụng cĩ hoặc khơng cĩ các dấu ngoặc cong.
Sau cùng, câu lệnh if cĩ thể được sử dụng để chọn giữa một trong ba lựa chọn trở lên. Với việc đưa ra mệnh đề else-if, câu lệnh if cĩ th ể bao gồm nhiều biểu thức mà từng biểu thức sẽ được lượng giá cho đến khi mọt trong những biểu thức nay lượng giá th à n h true hoặc gặp phải m ệnh đề else Nhiều m ệnh đề sh e if CC th ể được đưa "'ào, nhưng hãv nhtf rằ n g m ệnh đề else-if phải luơn đứng trước b ấ t kỳ m ệnh đề elsẹ
if (expression) { statements; ) else if (expression) Í Statements; } else { Statements; f Thủ thuât
Nếu bạn tự n h ậ n th ấy m ình sử dụng hơn hai hoặc ba m ệnh đề else-if trong một cáu lệnh if, cĩ th ể bạn muốn xem xét sử dụng m ột câu lệnh switch thay vào đĩ n h ư được mơ tả trong p h ần tiếp theọ
Câu lênh switch
Câu lệnh switch cĩ một vai trị rấ t tương tự như câu lệnh if trong Ja\aS cv ip t. Câu lìn h switch lưọng k,iấ m ội bií-u thức \ à sc sár.h giá trị với một hoặc nhiều m ệnh đề casẹ Nếu bạn cán so sán h một biến với hơn h i i hoặ-: lia giá trị, : â j ệah switch ‘à Ccdi ItiỊu quả n a ả t.
Mă sau dây trìn h bày cách câu lệnh switch thường được sử dụng trong lập trìn h JavaScript. Trong ví dụ nàv, chương trìn h sẽ cố quyết định tên của một quốc gia dựa vào mã quốc gia ISO (In te rn atio n al O rganization for Standardization) ba mẫu tự chính thức của nĩ.
// ISO official country codes switch (countrycode) { case "ALB”: countrystring="Albania"; break; case "DZA": countrystring="Algeria"; break; case “ASM": CJ^^r^JĨ:J^ọcjỊhững điểm CĨ bản jể JavaScript 39
40 Chương 2: Học những điểm cơ bản về JavaScriptcountrystring="American Samoa"; countrystring="American Samoa"; break; case "AND": countrystring=“Andorra“; break; case "AGO": countrystring="Angolá'; break; // etc. case T : default: countrystring="Unknown code"; }
Cùng m ột m ã này cĩ th ể được viết sử dụng các câu lệnh if-else-if, nhưng m ã đĩ vừa kém hiệu quả vừa khĩ đọc hơn. Hãy xem m ã trước để th ấy điều gì đang xảy rạ
Dịng đầu tiê n của câu lệnh sử dụng từ khĩa sw itch theo sau là biểu thức cần được lượng giá.
switch (countrycode) {
Trong ví dụ này, countrycode là một biến ngẫu nhiên chứa m ột chuỗị Ba dịng tiếp theo trong câu lệnh switch chứa m ệnh đề case đầu tiên.
case “ALB"'
countrystring=“Albania”; break;
Mệnh đề case biểu thị rằng chúng ta muốn so sánh giá trị của countrycode (biểu thức mà câu lệnh switch tác động lên) với chuỗi "ALB”. Nếu cĩ sự tương hợp chính xác, JavaS cript sẽ thực thi hai dịng tiếp theo:
B X ác lập biến countrỵstring sang "Albania". B Thốt câa lệnh switch tại câu lệnh break.
Dĩ nhiên, nếu giá trị của countrycode khơng khớp với chuỗi "ALB", biến countrystring khơng được xác lập và câu lệnh switch tiếp tục.
M ệnh đề case tiếp theo so sán h biểu thức với m ột giá trị mới:
case "DZA":
countrystnng=’‘Algena"; break;
Cáu lệnh switch ìuợng giá từng cảu lệnh case theo th ứ tự cho đên khi nĩ tìm th ấy m ột câu lẹnh tương hợp. Sau đĩ nĩ thực th i mã m à theo sau ngay m ệnh đề case cho đến khi gặp phải câu lện h b reak đầu tiên.
Thủ thuật•
Một khi một giá trị tương hựp được tìm thấy, JavaScript sẽ thực thi tất cả mã ♦heo sau thậm cbí hêr t'ong những mệnh đề rase khác cho đến khỉ £ặp phải câu lệnh break.
T rong JavaS cript, câu lệnh switch cĩ m ột loại m ệnh đề case đặc biệt được gọi là m ệnh đề default. M ệnh đề default thực th i chỉ nếu Jav aS crip t đã k h ơng th ể tương hợp biểu thức với b ất kỳ m ệnh đề trước. M ệnh đề default phải luơn là m ệnh đề cuối cùng trong câu lện h switch.
case ", default:
countrystring="Unknowri coơe";
Ví dạ trèn bao gồm một m ệnh đề case rỗng, cơ' tương hợp với chuỗi rong v"") hốc mộc dấu hỏi (?). Rạn cĩ chể cung cấp mộc chương trìn h để tương hợp với biểu thức trong một mệnh đề case, m iễn là chúng được tách biệt bảng các dấu phẩỵ Nếu biểu thức tương hợp với case rỗng, mã
bean tro n g m ện h đề d efault sẽ được thực th i vì k h ơ n g cĩ m ệ n h đề b reak đ# dừng nĩ lạị
Lặp lại các câu lệnh sử dụng các vịng lặp
Các vịng lặp (loop) là những câu lệnh tiện lợi trong hai mục đích:
■ Kbì bạn n uốn i(tù ’(ỉ, ti’ộ. tập bel) rau 'ộ.ỉ/, với W.5/ ĩĩ ỉo n cụ toổ
• K hi bạn m uốn hỉp /ạ i m ột tập bợp cân lộnb t'ớt s ố lần bất định
Cĩ bốn câu lệnh vịng lặp trong JavaScript: while, do-while, for, và for-in. Jav aS crip t củng cung cấp các câu lện h break và continué để cho các n h à lập trìn h thêm khả n ăng điều khiển đối với cách các vịng lặp thực th i n h ư th ế nàọ P h ần này s ẽ trình bày từng câu lệnh liên quan đến việc lặp lại và xem chúng cĩ th ể được áp dụng trong các chương trìn h như th ế nàọ