Gán chức năng cho một biến javascript

Bạn có thể gán các hàm cho các biến (vì trong JS bạn có thể chuyển các hàm như thể chúng là dữ liệu thuần túy), như trong var f = function() {...};. Bạn cũng có thể gọi hàm trong f bằng cách viết f() vào mã của mình

Ngoài ra, các biến trong JS không có kiểu. Một biến trước đây chứa một số không quan tâm nếu bạn gán cho nó một chuỗi hoặc mảng hoặc một hàm

Khi bạn thay đổi nó thành fn = baz(), bạn đang gọi hàm baz, hàm này trả về undefined (đơn giản vì không có câu lệnh trả về nào trong hàm đó). Vì vậy, fn bây giờ là undefined, đây chắc chắn không phải là một chức năng và bạn gặp lỗi khi thực thi

function bar() {}
0

hoặc chúng ta có thể viết nó có một trình xử lý (gọi lại) trong trình xử lý sự kiện, (giả sử chúng ta có một phần tử nút với id=”click-me”),

document.getElementById('click-me').addEventListener('click',function () {});

Chúng tôi gọi nó là một biểu thức vì nó không phải là một câu lệnh và nó cần một ngữ cảnh hoặc một nhiệm vụ

Hàm được khai báo hơi khác một chút ở chỗ nó là một câu lệnh hoàn chỉnh ngay lập tức

function bar() {}

Dạng hàm này là bất biến, nghĩa là không thể thay đổi.

function bar() {}
1 được khắc ghi trong ký ức và không thể được giao nhiệm vụ mới.
function bar() {}
2 ở trên có thể được giao nhiệm vụ mới bất cứ lúc nào

Để tìm hiểu thêm về điều này, hãy tìm kiếm, 'khai báo hàm so với biểu thức hàm' và để ý đến thuật ngữ, 'hoisting' để bạn biết cách nó phù hợp với bức tranh này

Qua một bên.

function bar() {}
3 là từ dành riêng trong JavaScript và chúng tôi không thể sử dụng nó trong ngữ cảnh cửa sổ chung, chỉ bên trong một hàm hoặc dưới dạng thuộc tính đối tượng. Tìm kiếm
function bar() {}
4 và bạn có thể tìm thấy điều gì đó về điều này

Các chức năng được khai báo không được thực thi ngay lập tức. Chúng được "lưu để sử dụng sau" 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 không thường kết thúc nó bằng dấu chấm phẩy.


Biểu thức hàm

Hàm JavaScript cũng có thể được xác định bằng biểu thức

Một biểu thức chức năng 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

Chức năng trên thực sự là một chức năng ẩn danh (một chức năng không có tên)

Các hàm được lưu trữ trong các biến không cần tên hàm. Chúng luôn được gọi (được 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 xây dựng ()

Như bạn đã thấy trong các ví dụ trước, các hàm JavaScript được định nghĩa bằng từ khóa

function bar() {}
5

Các hàm cũng có thể được xác định bằng hàm tạo hàm JavaScript tích hợp có tên là

function bar() {}
6

Thí dụ

const myFunction = new Function("a", "b", "return a * b");

cho x = myFunction(4, 3);

Tự mình thử »

Bạn thực sự không phải sử dụng hàm tạo. Ví dụ trên cũng giống như cách viết

Thí dụ

const myFunction = function(a,b) {return a*b};

cho x = myFunction(4, 3);

Tự mình thử »

Hầu hết thời gian, bạn có thể tránh sử dụng từ khóa

function bar() {}
7 trong JavaScript


cẩu chức năng

Trước đó trong hướng dẫn này, bạn đã học về "hoisting" (JavaScript Hoisting)

Nâng 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

Do đó, các hàm JavaScript có thể được gọi trước khi chúng được khai báo

chức năng của tôi (5);

function myFunction(y) {
  return y * y;
}

Các chức năng được xác định bằng một biểu thức không được nâng lên


Chức năng tự gọi

Các biểu thức chức năng 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 gọi

Các biểu thức hàm sẽ tự động thực thi nếu biểu thức được theo sau bởi ()

Bạn không thể tự gọi khai báo hàm

Bạn phải thêm dấu ngoặc đơn xung quanh hàm để chỉ ra rằng đó là một biểu thức hàm

Thí dụ

(function () {
  let x = "Xin chào. ";  // Tôi sẽ gọi chính mình
})();

Tự mình thử »

Chức năng trên thực sự là một chức năng tự gọi ẩn danh (hàm không có tên)


Hàm 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ị

Thí dụ

function myFunction(a, b) {
  return a * b;
}

cho x = myFunction(4, 3);

Tự mình thử »

Các hàm JavaScript có thể được sử dụng trong các biểu thức

Thí dụ

function myFunction(a, b) {
  return a * b;
}

đặt x = myFunction(4, 3) * 2;

Tự mình thử »


Chức năng là đối tượng

Toán tử

function bar() {}
8 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

Hàm JavaScript có cả thuộc tính và phương thức

Thuộc tính

function bar() {}
9 trả về số đối số nhận được khi hàm được gọi

Phương thức var f = function() {...};0 trả về hàm dưới dạng một chuỗi

Thí dụ

function myFunction(a, b) {
  return a * b;
}

hãy để văn bản = myFunction. toString();

Tự mình thử »

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 đố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 một cú pháp ngắn để viết các biểu thức hàm

Bạn không cần từ khóa

function bar() {}
5, từ khóa var f = function() {...};2 và dấu ngoặc nhọn

Thí dụ

// ES5
var x = function(x, y) {
  return x * y;
}

// ES6
const x = (x, y) => x * y;

Tự mình thử »

Các hàm mũi tên không có var f = function() {...};3 của riêng chúng. 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 nâng lên. Chúng phải được xác định trước khi chúng được sử dụng

Sử dụng

function bar() {}
50 an toàn hơn sử dụng
function bar() {}
51, vì biểu thức hàm luôn có giá trị không đổi

Bạn chỉ có thể bỏ qua từ khóa var f = function() {...};2 và dấu ngoặc nhọn nếu hàm là một câu lệnh đơn. Vì điều này, có thể là một thói quen tốt để luôn giữ chúng

Tôi có thể gán một hàm cho một biến JavaScript không?

Người lập trình có thể tạo một biến duy nhất bằng cách sử dụng các từ khóa var, let hoặc const và gán biểu thức hàm cho biến đó . Tuy nhiên, nên tạo một biến với từ khóa const để gán hàm vì biểu thức hàm luôn không đổi.

Tôi có thể gán một chức năng cho một biến không?

Trong Python, chúng ta có thể gán một hàm cho một biến . Và sử dụng biến đó, chúng ta có thể gọi hàm bao nhiêu lần chúng ta muốn. Qua đó, tăng khả năng sử dụng lại code. Chỉ cần gán một hàm cho biến mong muốn nhưng không có () i. e. chỉ với tên của chức năng.

Điều gì xảy ra khi bạn gán một hàm cho một biến trong JavaScript?

Khi bạn gán một đối tượng hàm cho một biến khác, JavaScript không tạo bản sao mới của hàm. Thay vào đó nó làm cho biến mới tham chiếu cùng một đối tượng hàm như ban đầu . Chỉ là hai biến có tên khác nhau đang truy cập cùng một đối tượng hàm cơ bản.

Bạn có thể lưu trữ các hàm trong một biến không?

Các hàm được lưu trong biến không cần tên hàm . Chúng luôn được gọi (được 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.