Tổ chức được mã nguồn dưới dạng các đơn vị để dễ quản lí và có thể tái sử dụng được

4. Giá trị trả về của hàm

Khi hàm kết thúc quá trình thực thi, nó có thể trả về giá trị cho nơi gọi hàm bằng cách sử dụng từ khóa return.

Khi tạo ra một hàm mới, tùy vào mục đích của hàm mà bạn có thể quyết định hàm đó có trả về một giá trị hay không.

Giá trị trả về là kết quả sẽ được trả về tại vị trí hàm được gọi. Mỗi một hàm chỉ có một giá trị trả về duy nhất. Các giá trị này có thể là một biến, một mảng hay một đối tượng, danh sách đối tượng.

Ví dụ:

1.	function myFunction(a, b) {
2.	    return a * b; // hàm trả về giá trị tích của a và b
3.	}
4.	let x = myFunction(4, 3);// Hàm được gọi, giá trị trả về sẽ được gán cho biến x

Chú ý: Khi gặp câu lệnh return, hàm sẽ trả về giá trị ngay tại thời điểm đó. Tất cả câu lệnh ở phía sau dòng lệnh return sẽ được bỏ qua.

Ví dụ:

1.	function printLines() {
2.	   console.log('First line');
3.	   console.log('Second line');
4.	   return;
5.	   console.log('Third line');
6.	}

Khi gọi hàm printLines() ở trên, dòng cuối cùng sẽ không bao giờ được thực thi, bởi vì câu lệnh return đã chấm dứt việc thực thi ở dòng trước đó. Do đó, chuỗi “Third line” sẽ không bao giờ được in ra.

5. Tham số của hàm

Tham số (parameter)

Tham số (còn được gọi đầy đủ là tham số hình thức – formal parameter) là các biến được khai báo trong phần header khi khai báo hàm.

Đối số (argument)

Khi gọi hàm thì các giá trị của các biến được khai báo trong phần header sẽ được truyền vào. Các giá trị này được gọi là tham số thực (actual parameter) hoặc đối số (argument).

Ví dụ:

1.	function isEven(number){
2.	   return number % 2 == 0;
3.	}
4.	isEven(5);

Ở đoạn mã trên, biến number được gọi là tham số, giá trị 5 được gọi là đối số.

6. Phạm vi của biến

Phạm vi (scope) của biến là các vị trí trong chương trình mà một biến có thể được sử dụng. Một biến được khai báo trong một khối lệnh thì được gọi là biến địa phương (local variable). Phạm vi của biến địa phương bắt đầu từ vị trí nó được khai báo cho đến điểm kết thúc của khối lệnh chứa nó. Biến được khai báo trong một khối lệnh thì không thể được truy cập từ bên ngoài khối.

Ví dụ:

1.	let country = "Việt Nam";
2.	if (country === "Việt Nam") {
3.	   let capital = "Hà Nội";
4.	   console.log("Trong khối, country: ", country); // Việt Nam
5.	   console.log("Trong khối, capital: ", capital); // Hà Nội
6.	}
7.	console.log("Ngoài khối, country: ", country); // Việt Nam
8.	console.log("Ngoài khối, capital: ", capital); // undefined

Ở đoạn mã trên, biến capital được khai báo bên trong khối lệnh if, do đó nó chỉ có phạm vi ở bên trong khối lệnh đó. Việc sử dụng biến capital ở ngoài khối lệnh if là không đúng, do đó kết quả in ra của câu lệnh đó là undefined.

Phạm vi hoạt động của biến trong vòng lặp for

Đối với vòng lặp for, biến được khai báo trong phần khởi tạo của vòng lặp thì có phạm vi trong toàn bộ vòng lặp. Biến được khai báo trong phần thân của vòng lặp thì chỉ có phạm vi bên trong thân vòng lặp (tính từ vị trí được khai báo cho đến hết khối lệnh chứa nó).

Ví dụ:

1.	for(let i = 0; i < 10; i++) {//Điểm bắt đầu phạm vi biến i
2.	   //...
3.	   //...
4.	   let j; //Điểm bắt đầu phạm vi biến j
5.	   //...
6.	   //...
7.	   //...
8.	}//Điểm kết thúc phạm vi biến i và j

Phạm vi của tham số của hàm

Tham số của hàm cũng là các biến địa phương. Phạm vi của các tham số là trong toàn bộ hàm đó. Mã trong hàm capitalOf dưới đây sử dụng được biến địa phương country, nhưng mã bên ngoài hàm thì không:

1.	function capitalOf(country) {
2.	   let capital;
3.	   if (country === "Việt Nam") {
4.	       capital = "Hà Nội";
5.	   }
6.	   return capital;
7.	}
8.	 
9.	console.log(capitalOf("Việt Nam")); // Hà Nội
10.	console.log(country); // undefined

Ở đoạn mã trên, không thể sử dụng được biến country ở bên ngoài hàm capitalOf(), do đó kết quả hiển thị sẽ là undefined.

Xem tiếp>> Chuong 6 Ham de quy

Có thể bạn quan tâm>> Cam nang lap trinh co ban danh cho nguoi moi bat dau