Tham số của hàm (Function Parameter) chính là tên được ta liệt kê ra trong phần định nghĩa hàm.
Ví dụ:
Đối số của hàm (Function Arguments) là những giá trị thực được truyền vào khi gọi hàm. Hay nó chính là những giá trị mà hàm được nhận.
Chú ý: Js function không thực hiện bất kỳ kiểm tra nào đối với các giá trị tham số hay đối số.
Một hàm trong Js có thể có nhiều hơn một tham số.
Hàm trong Js không xác định kiểu dữ liệu của tham số mà nó có thể là bất kỳ kiểu dữ liệu nào.
Hàm trong Js không thực hiện kiểm tra kiểu của các đối số truyền vào.
Hàm trong Js không kiểm tra số lượng đối số nhận được.
Ta có thể truyền ít hơn số đối số khi gọi một hàm. Khi đó:
Nếu một hàm được gọi mà không có đối số (ít hơn phần đã khai báo) thì những giá trị bỏ trống đó được đặt là undefined . Nhưng đôi khi điều này có thể chấp nhận được nhưng có lúc sẽ tốt hơn nếu ta gán cho tham số đó một giá trị mặc định cho tham số.
Ví dụ:
Nếu một hàm được gọi với quá nhiều đối số (nhiều hơn phần khai báo) thì ta có thể lấy những đối số đó bằng cách sử dụng đối tượng arguments .
Mặc định, các hàm JavaScript có một đối tượng dựng sẵn (built-in object) được gọi là arguments object.
arguments object là một mảng giống như object. Bạn có thể truy cập các giá trị của nó bằng cách sử dụng chỉ mục tương tự như mảng. Tuy nhiên, nó không hỗ trợ các phương thức mảng.
Ví dụ: Arguments Object
arguments object vẫn hợp lệ ngay cả khi hàm không chứa bất kỳ tham số nào.
Ví dụ:
arguments object có thể được iterated bằng cách sử dụng vòng lặp for.
Ví dụ: Iterate all arguments
Ví dụ: Tìm số lớn nhất của các đối số
Ví dụ: Tính tổng của các đối 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), thì bạn có thể truy cập các đối số này bằng cách sử dụng arguments object.
Khi một đối số được truyền vào hàm theo kiểu tham trị thì lúc này hàm chỉ quan tâm giá trị của nó chứ không cần biết địa chỉ hay nơi lưu trữ. Giá trị đó sẽ được copy vào biến cục bộ (mới) của hàm. Do đó, dù cho bên trong hàm làm thay đổi giá trị của đối số thì giá trị ban đầu của tham số cũng không bị thay đổi. Tức là giá trị của đối số trước và sau khi ra khỏi hàm là giống nhau, không bị thay đổi.
Ví dụ:
Trong Js, khi truyền một đối tượng vào hàm, đối tượng đó sẽ được xem như chúng được truyền bằng tham chiếu (pass by reference). Nếu hàm thay đổi một thuộc tính của đối tượng, thì thuộc tính đó sẽ thay đổi giá trị ban đầu.Tức là việc thay đổi của thuộc tính đối tượng bên trong hàm sẽ được phản ánh bên ngoài hàm.