C risiu s= 70, Fahrenhei t= 94 eUtus = 6 0 F a h re n h e it« 7
Tổ chức mã thành các hàm
T hỉnh th o ả n g cĩ trường hựp b ạn cĩ th ể n g ồ i xuống và v iê t cả Một chương trìn h Jav aS crip t m à khơng cĩ các hàm , nhưng dù tin hay khơng, loại đĩ của chương trìn h Jav aS crip t là k h á hiếm . Hầu h ế t các chương trìn h Jav a S c rip t chứa tối thiểu m ột hàm .
Các hàm cho phép bạn định nghĩa sẵn m ột nhĩm câu lện h Jav aS crip t trước khi bạn thực sự cần gọi m ã đĩ. Vì các h àm cĩ th ể được gọi liên tục với các th am sơ" khác nhau, chúng cũng tiế t kiệm thời gian.
Định nghĩa các hàm
Các hàm được định nghĩa sử dụng từ khĩa function. Các hàm phải được gán m ột tê n và cĩ th ể tùy ý địi hỏi m ột hoặc nhiều th a m sơ'. Các th am số được chứa trong các dấu ngoặc và được tách b iệt b ằn g các dấu phẩỵ
Function name (parameterl, parameter2...... parameterN) { statements; Logical logical Conditional c Assignment Special }
Chướng 2 ’ Học nh'7ng <1iểm cri bản vé lavaScript 61
Đây là dạng JavaS cript 1.5 đế định nghĩa các hàm . Jav aS crip t 2.0 giới thiệu m ột số phần mở rộng m ạnh mẽ cho dạng cơ bản nảy, bằng việc cho phép các tham số cĩ một kiểu dữ liệu, bản th â n hàm cĩ một kiểu dữ liệu, các th am số là những tham số được đ ặt tên tùy chọn và nhiều hơn nữạ Chúng ta sẽ xem xét các hàm Jav a S c rip t 2.0 ở phần sau trong chưong nàỵ
Các th am ỉ»ốdược xác định bên crưng JỊuh nghĩa hàĩn dược xem >ả cáo biến bên tro n g hàm. Các tên tham số phải duy n h ấ t, trong đĩ hai tham số của cùng m ột hàm khơng th ể cĩ cùng m ột tên.
Từ cú pháp hàm cơ bản, chúng ta cĩ thế’ định nghĩa một hàm cơ bản.
tunction ađ_two(x, y) { if (X > 7} I X = X - 7: } else { X = X + 7; } ■f 'y > *8’ { y = y -18; } else { y = y +18; } return X + y; }
Mr t'xrĩrc tro một h i n đư^c gọi ’à acM. t ’vcỌ ITà'n này chao n h ận hạ: tharr¿ sơ cĩ tê n là X v;\ V. Tên của hànv và các th a m số m à nĩ chấp n h ậ n được định n g h ĩa trong dịng m ã đầu tiên:
Furictiori ađ_.two (x, V) í
Mã của hàm định n.ghĩa một. cách cĩ phần phức tạp để cộng hai ?ố lại
với nhaụ Đầu tiên, nội dung của cả X và V được kiểm tra và phụ thuộc
vào m ột giá tr ị nào đĩ được cộng hoặc được trừ nhaụ
if (X > 7) í X = X - 7; } else { X = X + 7; } if (y > 18) { y = y -1 8 ;
62 Chưđng 2: Học những điểm cơ bản về JavaScript} else { } else {
y = y + 18;
}
Sau đĩ hai số được cộng lại với nhau và k ết quả được tr ả về. Với việc thêm m ột câu lệnh retu rn tr ả về m ột k ết quả, hàm này cĩ th ể cĩ chức năng như m ột biểu thức b ằng việc tr ả về m ột giá trị.
return X + y;
Bây giờ m ã chỉ việc định nghĩa m ột hàm. Nếu bạn th êm hàm này vào tem plate HTML và cơ' thực th i nĩ trong một trìn h duyệt web, nĩ sẽ khơng làm gì cả. Các hàm cần được gọi đê chạỵ Và nếu m ột h àm định nghĩa m ột hoặc nhiều th am số, các giá trị cũng phải được cung cấp cho những th am số nàỵ
Để gọi m ột hàm , bạn gọi những điều sau đây:
1. Gõ n hập tê n của hàm của nĩ theo sau là m ột dấu ngoặc đơn mở:
ađ_two (
2. Cung cấp m ột danh sách các th am số, nếu được yêu cầu, được tách b iệt bằng các dấu phẩy:
ađ_two (12, 2
3. Tiếp theo là m ột dấu ngoặc đơn đĩng và m ột dấu chấm phẩy:
ađ_two (12, 2) ;
4. Dĩ nhiơn, trong trường hợp của hàm , chúng ta cần gán giá trị trổ về của nĩ sang một biến, hoặc sử dụng nĩ trong một ngữ cảnh mong đợi m ột giá trị:
var result = ađ_two (12, 2) :
Chúng ta cĩ th ể k ết hợp định nghĩa hàm , tem plate HTML v à một chút m ã gọi h àm với các th am số khác nhau như sau:
<html> <head>
<title>JavaScript sample code</title> </head>
<body>
<h1>Defining JavaScript Functions</h1>
<script language="JavaScript" type="text/javascript"> <!-- // Begin
Chưdng 2: Học những đ:ế n r ơ b?n vế Jiv a S c rp t 63 function ađ_two(x, y) I if (X > 7) { X = X - 7; } else { X = X + 7; if (y > 18) { y = y -18; 1 else ( y = y + 18; } return X + y; í document.•wr-tet"ađ_two<21 17) .= ■ + ađ_two(2, 17) T doournent.writefacldJwoi14, 9) = ' + ađ_two(14 9) + *<BR>"); document.write("ađ_two(100, 200) = " + ađíl_two(100, P00) + <BFb“), / End -•> <-/s~rhb </body> </html>
Trong m ã này, định nghĩa hàm ađ_two() đã được chèn vào phần <script> của tem plate HTML. Để mã bên trong hàm đĩ được thực thi, chúng ta cần gọi hàm đĩ. Trong mã, chúng ta gọi h àm đĩ ba lần, với ba tập hợp th am số khác nhaụ
Khi chúng ta tải mă nàv vào một trìn h duyệt, chúng ta th ây một thứ gì dĩ tương tự như h ìn h 2.4. Vì chúng ta gọi các hàm bên trong lệnh gọi hàm document.writeO, k ết quả dữ liệu xuất của hàm được ghi sang màn hình. Đây cũng là một ví dụ hay về cách các hàm cĩ th ể tự được chuyển dưới dạng các th am số đến những hàm khác như th ế nào - giá trị của ađ_tw o p h ả i được thự c th i để đưa ra g iá t r ị được ch u y ển đến document, w ritẹ
64 Chương 2: Học những điểm cơ bản về JavaScript
Chấp nhận các tham số
Dĩ nhiên, m ột hàm cĩ th ể được định nghĩa mà khơng cĩ b ấ t kỳ tham số.
Function printjieader o {
Các dấu ngoặc đơn vẫn được yêu cầu khi định nghĩa và gọi m ột hàm như vậỵ
Print_header 0 ;
rJJaYeScnpl «ample code * Microsoft Internet Explorer ■ ■ ■ LJn LÜ
j | . Ẹ b ..£* Favoiit** Xọoh Help ____ESI
{ <«■? ''&■' 2l' ứ i 1 ^ Í Ì I & & 4 !r ' Â ________— j n , , . r * •
D efining Ja v a S c rip t F unctions
a d d tw o (2 , 17) — AA a d d _ tw o ( 1 4 r 9) = 34 a d d j w o ( 1 0 0 , 2 0 0 ) = 2 7 5
___________________ __________ _ _____ ___ _ ...... -J
SfcjDoné ' - . •" ■ • - ' " __ ; I i My Campiiet_£
Hình 2.4 Định nghĩa một hàm và gọi nĩ liên tục
Một vấn đề k h á quan trọng cần xem xét khi sử dụng hàm là cách các biến và th ậm chí các th am số được xử lý. Xem xét đoạn mã cho Jav aS crip t sau đây: var counter; counter = 5; function ađ2(input) { input = input + 2; document.writefinput = " + input + “<br>"); return; } ađ2(counter); document.writefcounter = " + counter + "<br>");
G iá tr ị nào sẽ được ghi sang m àn h ìn h ở cuối chương trìn h đĩ? Chúng
ta b ắ t đầu bằng việc định nghía một biến cĩ tên là counter, và gán cho nĩ m ột giá trị 5. Sau đĩ chúng ta định nghĩa m ột hàm cĩ tên là ađ2() dường n h ư thêm giá trị 2 vào tham số được chuyển đến nĩ. Sau đĩ chúng ta gọi h àm này bằng biến counter và in giá trị của nĩ sang m àn hình.
Câu tr ả lời là counter này vẫn sẽ cĩ m ột giá trị là 5 ở cuối chương trin h .
Chươr.g 2: Học nnũnc, diểin J0 ban Vfc ^.avaSciipi ________________ _____ẳ ề
I ^ J d v i S c i i p t T e s t • M iu iu su ll In te rn e t E x p lo ter W H E3