return
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Câu lệnh return kết thúc việc thực thi hàm và chỉ định một giá trị trả về cho hàm gọi.
Try it
function getRectArea(width, height) {
if (width > 0 && height > 0) {
return width * height;
}
return 0;
}
console.log(getRectArea(3, 4));
// Expected output: 12
console.log(getRectArea(-3, 4));
// Expected output: 0
Cú pháp
return;
return expression;
expressionOptional-
Biểu thức có giá trị cần được trả về. Nếu bị bỏ qua,
undefinedđược trả về.
Mô tả
Câu lệnh return chỉ có thể được sử dụng trong thân hàm. Khi câu lệnh return được sử dụng trong thân hàm, việc thực thi hàm sẽ dừng lại. Câu lệnh return có các tác dụng khác nhau khi được đặt trong các hàm khác nhau:
- Trong hàm thông thường, lời gọi đến hàm đó được đánh giá là giá trị trả về.
- Trong async function, promise được tạo ra sẽ được giải quyết với giá trị trả về.
- Trong generator function, đối tượng generator được tạo ra có phương thức
next()trả về{ done: true, value: returnedValue }. - Trong async generator function, đối tượng async generator được tạo ra có phương thức
next()trả về một promise được thực hiện với{ done: true, value: returnedValue }.
Nếu câu lệnh return được thực thi trong một khối try, khối finally của nó, nếu có, sẽ được thực thi trước, trước khi giá trị thực sự được trả về.
Chèn dấu chấm phẩy tự động
Cú pháp cấm các ký tự kết thúc dòng giữa từ khóa return và biểu thức cần được trả về.
return
a + b;
Đoạn code trên được biến đổi bởi chèn dấu chấm phẩy tự động (ASI) thành:
return;
a + b;
Điều này làm cho hàm trả về undefined và biểu thức a + b không bao giờ được đánh giá. Điều này có thể tạo ra cảnh báo trong console.
Để tránh vấn đề này (để ngăn ASI), bạn có thể sử dụng dấu ngoặc đơn:
return (
a + b
);
Ví dụ
>Ngắt một hàm
Một hàm dừng ngay lập tức tại điểm mà return được gọi.
function counter() {
// Infinite loop
for (let count = 1; ; count++) {
console.log(`${count}A`); // Until 5
if (count === 5) {
return;
}
console.log(`${count}B`); // Until 4
}
console.log(`${count}C`); // Never appears
}
counter();
// Logs:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
Trả về một hàm
Xem thêm bài viết về Closures.
function magic() {
return function calc(x) {
return x * 42;
};
}
const answer = magic();
answer(1337); // 56154
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-return-statement> |