Tóm tắt hàm ECMAScript

Gì là hàm?

Hàm là một nhóm câu lệnh có thể được chạy ở bất kỳ nơi nào.

Hàm là phần cốt lõi của ECMAScript.

Hàm được khai báo bằng cách sử dụng từ khóa function, tên hàm, một nhóm tham số và mã cần thực hiện trong dấu ngoặc.

Cú pháp cơ bản của hàm như sau:

function functionName(arg0, arg1, ... argN) {
  các câu lệnh
}

Ví dụ:

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

Làm thế nào để gọi hàm?

Hàm có thể được gọi bằng cách thêm tên hàm và các tham số trong dấu ngoặc, nếu có nhiều tham số.

Nếu bạn muốn gọi hàm trong ví dụ trên, bạn có thể sử dụng mã sau:

sayHi("David", " Nice to meet you!")

Gọi hàm sayHi() trên sẽ tạo ra một cửa sổ cảnh báo. Bạn có thểThử nghiệm trực tiếp với ví dụ này.

Hàm như thế nào để trả về giá trị?

Hàm sayHi() không trả về giá trị, nhưng không cần phảideclare nó một cách đặc biệt (như sử dụng void trong Java).

Mặc dù hàm thực sự có giá trị, nhưng không cần phảideclare nó một cách rõ ràng (như sử dụng void trong Java). Hàm chỉ cần sử dụng toán tử return sau đó là giá trị cần trả về.

function sum(iNum1, iNum2) {
  return iNum1 + iNum2;
}

Mã dưới đây gán giá trị trả về của hàm sum cho một biến:

var iResult = sum(1,1);
alert(iResult);	// xuất "2"

Một khái niệm quan trọng khác là, như trong Java, hàm sẽ dừng ngay lập tức khi thực hiện xong câu lệnh return. Do đó, mã sau câu lệnh return sẽ không được thực hiện.

Ví dụ, trong đoạn mã dưới đây, hộp cảnh báo alert sẽ không hiển thị:

function sum(iNum1, iNum2) {
  return iNum1 + iNum2;
  alert(iNum1 + iNum2);
}

Một hàm có thể có nhiều câu lệnh return, như sau:

function diff(iNum1, iNum2) {
  if (iNum1 > iNum2) {
    return iNum1 - iNum2;
  }
    return iNum2 - iNum1;
  }
}

Hàm trên được sử dụng để trả về hiệu của hai số. Để thực hiện điều này, phải trừ số lớn hơn bằng số nhỏ hơn, vì vậy phải sử dụng câu lệnh if để quyết định thực hiện câu lệnh return nào.

Nếu hàm không có giá trị trả về, có thể gọi toán tử return không có tham số để thoát khỏi hàm bất kỳ lúc nào.

Ví dụ:

function sayHi(sMessage) {
  if (sMessage == "bye") {
    return;
  }
  alert(sMessage);
}

Trong đoạn mã này, nếu sMessage bằng "bye", hộp cảnh báo sẽ không bao giờ hiển thị.

Ghi chú:Nếu hàm không có giá trị trả về rõ ràng, hoặc gọi lệnh return không có tham số, thì giá trị thực sự mà nó trả về là undefined.