01/10/2018, 16:07

Thắc mắc cú pháp javascript

Mình đọc trên mạng thấy đoạn code thế này nhưng ko rõ nên hiểu nó thế nào: tại sao phải viết thế, làm thế nào để return? Mong các cao thủ chỉ giáo.

(async function loop() {
//
})(param);

null viết 18:10 ngày 01/10/2018

Thế Dân Nguyễn viết 18:22 ngày 01/10/2018

async function

mình ko có hỏi về async await, mình hỏi về cái cú pháp:
(function loop() {
})(param);

tại sao 1 function lại đặt trong (), sau đó mới lại truyền param ở dấu đóng mở ngoặc phía sau?

Son Tran viết 18:12 ngày 01/10/2018

Cái đó gọi là IIFE (Immediately Invoked Function Expressions), bạn tham khảo thêm trong bài viết này:

Medium – 4 Aug 17

Essential JavaScript: Mastering Immediately-invoked Function Expressions

Understanding functions inside out and then learning how to exploit them to write modern, clean JavaScript code is a critical skill for…

Reading time: 10 min read

null viết 18:07 ngày 01/10/2018

Chuẩn rồi, mình đang định giải thích dài dòng.
Xin lỗi vì không bấm nút like được.

Phan Bá Hải viết 18:08 ngày 01/10/2018

Cái đó gọi là Immediately Invoked Function Expression

  • Function này sẽ được thực thi ngay kia file js được nạp
  • IIFE như một cái bao code bên trong lại, nên giá trị bên trong đó không ảnh hưởng đến bên ngoài
var a = 'Hello';

(function() {
   var a = 'Halo';
   console.log(a); // Halo
})();

console.log(a); // Hello

Vậy muốn truyền biến bên ngoài vào thì làm sao?
Dấu ngoặc bên trong function là chỉ access bên trong IIFE nên không thể access từ bên ngoài, vậy ta dùng dấu ngoặc cuối để truyền giá trị từ ngoài vào

Một trong những công dụng của IIFE là bạn có thể tạo các function tự chạy (như plugin js cho các component như slider)

nguyen hai viết 18:12 ngày 01/10/2018

"tại sao 1 function lại đặt trong (), sau đó mới lại truyền param ở dấu đóng mở ngoặc phía sau? "
cấu trúc thực thi function trong js nó như vậy, trong C++ cũng có cấu trúc tương tự thực thi hàm.

  • Ý nghĩa thì nó đã load toàn bộ block lệnh function express vào vùng nhớ RAM rồi biên dịch sẵn >< function express chỉ là một block lệnh chưa được biên dịch.
    (tương tự hoàn toàn gọi thực thi function OOP trong C++).
Nguyễn Văn Công viết 18:08 ngày 01/10/2018

Đơn giản là: Viết hảm => Gọi hàm (có thể truyền tham số)

Bài liên quan
0