Cách gán hàm cho biến trong 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() trong 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 hàm và bạn gặp lỗi khi thực thi fn()

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. bar được khắc ghi trong ký ức và không thể được giao nhiệm vụ mới. foo ở 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. name 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 name window context và bạn có thể tìm thấy điều gì đó về điều này

Một chức năng được định nghĩa như thế này có thể truy cập được từ bất kỳ đâu trong ngữ cảnh của nó bằng tên của nó. Nhưng đôi khi có thể hữu ích khi xử lý các tham chiếu hàm như tham chiếu đối tượng. Ví dụ: bạn có thể gán một đối tượng cho một biến dựa trên một số tập hợp điều kiện và sau đó truy xuất một thuộc tính từ một hoặc đối tượng khác

var name = 'Cameron';
var spouse;

if ( name === 'Taylor' ) spouse = { name: 'Jordan' };
else if ( name === 'Cameron' ) spouse = { name: 'Casey' };

var spouseName = spouse.name;

Trong JavaScript, bạn có thể làm điều tương tự với các hàm

// Example 1
var hashAlgorithm = 'sha1';
var hash;

if ( hashAlgorithm === 'sha1' ) hash = function(value){ /*...*/ };
else if ( hashAlgorithm === 'md5' ) hash = function(value){ /*...*/ };

hash('Fred');

Trong ví dụ trên, hash là một biến bình thường. Nó được gán một tham chiếu đến một hàm, sau đó hàm mà nó tham chiếu có thể được gọi bằng cách sử dụng dấu ngoặc đơn, giống như một khai báo hàm bình thường

Ví dụ trên tham khảo các chức năng ẩn danh. các hàm không có tên riêng. Bạn cũng có thể sử dụng các biến để chỉ các hàm được đặt tên. Ví dụ trên có thể được viết lại như vậy

// Example 2
var hashAlgorithm = 'sha1';
var hash;

if ( hashAlgorithm === 'sha1' ) hash = sha1Hash;
else if ( hashAlgorithm === 'md5' ) hash = md5Hash;

hash('Fred');

function md5Hash(value){
    // ...
}

function sha1Hash(value){
    // ...
}

Hoặc, bạn có thể gán tham chiếu hàm từ thuộc tính đối tượng

// Example 3
var hashAlgorithms = {
    sha1: function(value) { /**/ },
    md5: function(value) { /**/ }
};

var hashAlgorithm = 'sha1';
var hash;

if ( hashAlgorithm === 'sha1' ) hash = hashAlgorithms.sha1;
else if ( hashAlgorithm === 'md5' ) hash = hashAlgorithms.md5;

hash('Fred');

Bạn có thể gán tham chiếu cho một hàm do biến này nắm giữ cho biến khác bằng cách bỏ qua dấu ngoặc đơn. Điều này có thể dẫn đến một sai lầm dễ mắc phải. cố gắng gán giá trị trả về của một hàm cho một biến khác, nhưng vô tình gán tham chiếu cho hàm

// Example 4
var a = getValue;
var b = a; // b is now a reference to getValue.
var c = b(); // b is invoked, so c now holds the value returned by getValue (41)

function getValue(){
    return 41;
}

Một tham chiếu đến một hàm giống như bất kỳ giá trị nào khác. Như bạn đã thấy, một tham chiếu có thể được gán cho một biến và giá trị tham chiếu của biến đó sau đó có thể được gán cho các biến khác. Bạn có thể chuyển tham chiếu đến hàm giống như bất kỳ giá trị nào khác, bao gồm chuyển tham chiếu đến hàm dưới dạng giá trị trả về của hàm khác. Ví dụ

// Example 5
// getHashingFunction returns a function, which is assigned
// to hash for later use:
var hash = getHashingFunction( 'sha1' );
// ...
hash('Fred');


// return the function corresponding to the given algorithmName
function getHashingFunction( algorithmName ){
    // return a reference to an anonymous function
    if (algorithmName === 'sha1') return function(value){ /**/ };
    // return a reference to a declared function
    else if (algorithmName === 'md5') return md5;
}

function md5Hash(value){
    // ...
}

Bạn không cần gán một tham chiếu hàm cho một biến để gọi nó. Ví dụ này, xây dựng từ ví dụ 5, sẽ gọi getHashingFunction và sau đó ngay lập tức gọi hàm được trả về và chuyển giá trị trả về của nó cho hashValue

________số 8_______

Lưu ý khi cẩu hàng

Hãy nhớ rằng, không giống như khai báo hàm thông thường, các biến tham chiếu đến hàm không được "hoisted". Trong ví dụ 2, các hàm

var name = 'Cameron';
var spouse;

if ( name === 'Taylor' ) spouse = { name: 'Jordan' };
else if ( name === 'Cameron' ) spouse = { name: 'Casey' };

var spouseName = spouse.name;
0 và
var name = 'Cameron';
var spouse;

if ( name === 'Taylor' ) spouse = { name: 'Jordan' };
else if ( name === 'Cameron' ) spouse = { name: 'Casey' };

var spouseName = spouse.name;
1 được xác định ở cuối tập lệnh, nhưng có sẵn ở mọi nơi ngay lập tức. Bất kể bạn định nghĩa một hàm ở đâu, trình thông dịch sẽ "nâng" nó lên đầu phạm vi của nó, làm cho nó khả dụng ngay lập tức. Đây không phải là trường hợp đối với các định nghĩa biến, vì vậy mã như sau sẽ bị hỏng

Làm cách nào tôi có thể gán một hàm cho một biến?

Phương pháp 1. Gán đối tượng chức năng cho tên biến mới . Cái này là cái gì? . create a new variable name g and assign the function object f to the new variable with the statement f = g. What is this? The reason is that both variables point to the same function object in memory.

Làm cách nào để gán chức năng trong JavaScript?

Bản trình diễn JavaScript. Mục tiêu. gán() .
mục tiêu const = {a. 1, b. 2 };
const nguồn = {b. 4, c. 5 };
const returnTarget = Đối tượng. gán (mục tiêu, nguồn);
bảng điều khiển. nhật ký (mục tiêu);
bảng điều khiển. nhật ký (đã trả về mục tiêu === mục tiêu);

Làm cách nào để tạo biến hàm trong JavaScript?

Hiện tại, có 3 cách khai báo biến trong JavaScript. bằng cách sử dụng từ khóa var cũ và bằng cách sử dụng từ khóa let và const mới . Trước ES6, sử dụng từ khóa var là cách duy nhất để khai báo một biến, nhưng bây giờ chúng ta có thể sử dụng let và const , có quy tắc chặt chẽ hơn và giúp mã ít bị lỗi hơn.

Làm cách nào để gọi một hàm trong một biến JavaScript?

Có hai phương pháp để gọi một hàm từ một chuỗi được lưu trữ trong một biến. .
Sử dụng phương pháp đối tượng cửa sổ
Sử dụng phương thức eval()