function* expression
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Từ khóa function* có thể được dùng để định nghĩa một generator function bên trong một biểu thức.
Bạn cũng có thể định nghĩa generator function bằng cách sử dụng function* declaration.
Try it
const foo = function* () {
yield "a";
yield "b";
yield "c";
};
let str = "";
for (const val of foo()) {
str += val;
}
console.log(str);
// Expected output: "abc"
Cú pháp
function* (param0) {
statements
}
function* (param0, param1) {
statements
}
function* (param0, param1, /* …, */ paramN) {
statements
}
function* name(param0) {
statements
}
function* name(param0, param1) {
statements
}
function* name(param0, param1, /* …, */ paramN) {
statements
}
Note:
Một expression statement không thể bắt đầu bằng từ khóa function để tránh nhầm lẫn với khai báo function*. Từ khóa function chỉ bắt đầu một biểu thức khi nó xuất hiện trong ngữ cảnh không thể chấp nhận câu lệnh.
Tham số
nameOptional-
Tên của function. Có thể bỏ qua, trong trường hợp đó function là ẩn danh. Tên chỉ có phạm vi cục bộ trong phần thân function.
paramNOptional-
Tên của tham số chính thức cho function. Về cú pháp của tham số, xem tài liệu tham khảo Functions.
statementsOptional-
Các câu lệnh tạo nên phần thân của function.
Mô tả
Biểu thức function* rất tương tự và có cú pháp gần giống với function* declaration. Sự khác biệt chính giữa biểu thức function* và khai báo function* là tên function, có thể được bỏ qua trong biểu thức function* để tạo các function ẩn danh. Biểu thức function* có thể được dùng như một IIFE (Immediately Invoked Function Expression) chạy ngay khi nó được định nghĩa, cho phép bạn tạo một iterable iterator object tạm thời. Xem thêm chương về functions để biết thêm thông tin.
Ví dụ
>Sử dụng biểu thức function*
Ví dụ sau đây định nghĩa một generator function không tên và gán nó cho x. Function yield bình phương của đối số:
const x = function* (y) {
yield y * y;
};
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-generator-function-definitions> |