Mục lục bài viết
1.Định nghĩa hàm JavaScript
- Các hàm JavaScript được định nghĩa với
function
từ khóa. - Có thể sử dụng khai báo hàm hoặc biểu thức hàm.
Khai báo hàm (Function Declarations)
Cú pháp:
- Các hàm đã khai báo không được thực thi ngay lập tức. Chúng được “lưu để sử dụng sau này”, và sẽ được thực thi sau đó, khi chúng được gọi (được gọi).
- Dấu chấm phẩy được sử dụng để phân tách các câu lệnh JavaScript thực thi.
Vì một khai báo hàm không phải là một câu lệnh thực thi, nên thông thường sẽ không kết thúc nó bằng dấu chấm phẩy.
Biểu thức hàm
- Một hàm JavaScript cũng có thể được xác định bằng cách sử dụng một biểu thức.
- Một biểu thức hàm có thể được lưu trữ trong một biến:
- Sau khi một biểu thức hàm đã được lưu trữ trong một biến, biến đó có thể được sử dụng như một hàm:
- Hàm trên thực chất là một hàm ẩn danh (một hàm không có tên).
- Các hàm được lưu trữ trong biến không cần tên hàm. Chúng luôn được gọi (gọi) bằng cách sử dụng tên biến.
- Hàm trên kết thúc bằng dấu chấm phẩy vì nó là một phần của câu lệnh thực thi.
Hàm tạo hàm ()
- Như bạn đã thấy trong các ví dụ trước, các hàm JavaScript được định nghĩa với từ khóa
function
. - Các hàm cũng có thể được định nghĩa bằng một hàm tạo hàm JavaScript tích hợp được gọi là
Function()
.
- Bạn thực sự không cần phải sử dụng hàm tạo hàm. Ví dụ trên cũng giống như cách viết:
- Có thể tránh sử dụng từ khóa
new
trong JavaScript.
Chức năng nâng (Function Hoisting)
- Hoisting là hành vi mặc định của JavaScript để di chuyển các khai báo lên đầu phạm vi hiện tại.
- Hoisting áp dụng cho khai báo biến và khai báo hàm.
- Các hàm được xác định bằng cách sử dụng một biểu thức không được nâng lên.
- Do đó, các hàm JavaScript có thể được gọi trước khi chúng được khai báo:
Các chức năng tự gọi (Self-Invoking Functions)
- Biểu thức hàm có thể được thực hiện “tự gọi”.
- Một biểu thức tự gọi được gọi (bắt đầu) tự động mà không cần gọi.
- Biểu thức hàm sẽ tự động thực thi nếu biểu thức được theo sau bởi ().
- Không thể tự gọi một khai báo hàm.
- Bạn phải thêm dấu ngoặc đơn xung quanh hàm để chỉ ra rằng nó là một biểu thức hàm.
Ví dụ
- Hàm trên thực chất là một hàm tự gọi ẩn danh (hàm không có tên).
Các chức năng có thể được sử dụng làm giá trị
- Các hàm JavaScript có thể được sử dụng làm giá trị:
- Các hàm JavaScript có thể được sử dụng trong các biểu thức:
Chức năng là Đối tượng
- Toán tử
typeof
trong JavaScript trả về “hàm” cho các hàm. - Tuy nhiên, các hàm JavaScript tốt nhất có thể được mô tả dưới dạng các đối tượng.
- Các hàm JavaScript có cả thuộc tính và phương thức.
- Thuộc
arguments.length
tính trả về số lượng đối số nhận được khi hàm được gọi.
- Phương thức
toString()
trả về hàm dưới dạng một chuỗi:
- Một hàm được định nghĩa là thuộc tính của một đối tượng, được gọi là một phương thức đối với đối tượng.
- Một hàm được thiết kế để tạo các đối tượng mới, được gọi là hàm tạo đối tượng.
Hàm mũi tên
- Các hàm mũi tên cho phép viết một cú pháp ngắn gọn để viết các biểu thức hàm.
- Bạn không cần từ khóa
function
, từ khóareturn
và dấu ngoặc nhọn.
- Các hàm mũi tên không có hàm riêng của chúng
this
. Chúng không phù hợp để xác định các phương thức đối tượng. - Các chức năng mũi tên không được kéo lên. Chúng phải được xác định trước khi sử dụng.
- Sử dụng
const
an toàn hơn sử dụngvar
, bởi vì biểu thức hàm luôn có giá trị không đổi. - Chỉ có thể bỏ qua từ khóa
return
và dấu ngoặc nhọn nếu hàm là một câu lệnh duy nhất. Bởi vì điều này, có thể là một thói quen tốt để luôn giữ chúng. - Các chức năng mũi tên không được hỗ trợ trong IE11 hoặc phiên bản cũ hơn.
2.Tham số hàm JavaScript
- JavaScript
function
không thực hiện bất kỳ kiểm tra nào đối với các giá trị tham số (đối số).
Các tham số và đối số của hàm
- Trước đó trong hướng dẫn này, bạn đã biết rằng các hàm có thể có các tham số:
- Tham số hàm là tên được liệt kê trong định nghĩa hàm.
- Các đối số của hàm là các giá trị thực được chuyển đến (và được nhận bởi) hàm.
Quy tắc tham số
- Định nghĩa hàm JavaScript không chỉ định kiểu dữ liệu cho các tham số.
- Các hàm JavaScript không thực hiện kiểm tra kiểu trên các đối số được truyền vào.
- Các hàm JavaScript không kiểm tra số lượng đối số nhận được.
Tham số mặc định
- Nếu một hàm được gọi với các đối số bị thiếu (ít hơn được khai báo), các giá trị bị thiếu được đặt thành
undefined
. - Đôi khi điều này có thể chấp nhận được, nhưng đôi khi tốt hơn là chỉ định một giá trị mặc định cho tham số.
Đối tượng Đối số
- Các hàm JavaScript có một đối tượng tích hợp được gọi là đối tượng đối số.
- Đối tượng đối số chứa một mảng các đối số được sử dụng khi hàm được gọi (được gọi).
- Bằng cách này, bạn có thể chỉ cần sử dụng một hàm để tìm (ví dụ) giá trị cao nhất trong danh sách các số:
- Nếu một hàm được gọi với quá nhiều đối số (nhiều hơn được khai báo), các đối số này có thể đạt được bằng cách sử dụng đối tượng đối số.
Các đối số được thông qua theo giá trị
- Các tham số, trong một lời gọi hàm, là các đối số của hàm.
- Các đối số JavaScript được truyền theo giá trị : Hàm chỉ biết các giá trị chứ không phải vị trí của đối số.
- Nếu một hàm thay đổi giá trị của đối số, nó không thay đổi giá trị ban đầu của tham số.
- Các thay đổi đối với đối số không hiển thị (phản ánh) bên ngoài hàm.
Đối tượng được chuyển qua tham chiếu
- Trong JavaScript, các tham chiếu đối tượng là các giá trị.
- Do đó, các đối tượng sẽ hoạt động giống như chúng được truyền qua tham chiếu:
- Nếu một hàm thay đổi một thuộc tính đối tượng, nó sẽ thay đổi giá trị ban đầu.
- Các thay đổi đối với thuộc tính đối tượng có thể nhìn thấy (phản ánh) bên ngoài hàm.
KẾT LUẬN: Tôi hy vọng bài viết này hữu ích cho bạn. Cảm ơn các bạn đã theo dõi bài viết!
419 lượt xem18/10/2022 Blog Tin Học