Sử dụng return
để chỉ định giá trị mà hàm sẽ tạo ra dưới dạng kết quả cuối cùng. Khi trình thông dịch tiếp cận câu lệnh return
, hàm chứa câu lệnh đó ngay lập tức kết thúc và giá trị đã chỉ định sẽ được trả về ngữ cảnh mà hàm được gọi:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Một hàm trả về một giá trị có thể được xử lý hiệu quả là dữ liệu mà hàm đó chứa, tương tự như một biến:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
Câu lệnh return
không có biểu thức sẽ kết thúc hàm và trả về undefined
:
const myFunction = function() {
return;
}
myFunction();
> undefined
Vì từ khoá return
báo hiệu việc kết thúc một hàm, nên mọi mã theo sau return
đã gặp sẽ không được thực thi:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
Ngoài ra, mã theo sau câu lệnh return
gặp phải có thể dẫn đến cảnh báo (chứ không phải lỗi) trong bảng điều khiển phát triển của một số trình duyệt:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
Xin nhắc lại, điều này chỉ áp dụng cho câu lệnh return
gặp phải trong quá trình thực thi hàm chứ không áp dụng cho bất kỳ mã nào theo tuần tự câu lệnh return
:
const myFunction = function( myParameter ) {
if( myParameter === undefined ) {
return "This is the result.";
}
return "This is the alternate result.";
}
myFunction();
> "This is the result."
myFunction( true );
> "This is the alternate result."
Tính năng "Ngắn mạch" trong một hàm sử dụng return
đời đầu có thể cho phép mã ngắn gọn hơn so với một câu lệnh return
duy nhất ở cuối hàm. Ví dụ: hàm sau đây xác định liệu giá trị đã truyền có phải là một chuỗi chứa 5 ký tự trở lên hay không. Nếu giá trị đã truyền không phải là giá trị cố định kiểu chuỗi, thì mã đếm các ký tự là không cần thiết và hàm có thể trả về kết quả false
ngay lập tức:
function myFunction( myString ) {
if( typeof myString !== "string" ) {
return false;
}
if( myString.length >= 5 ) {
return true;
} else {
return false;
}
}
myFunction( 100 );
> false
myFunction( "St" );
> false
myFunction( "String." );
> true
Biểu thức hàm mũi tên
riêng biệt ở chỗ từ khoá return
được ngụ ý khi nội dung hàm mũi tên chứa một biểu thức và không có cú pháp khối:
const myFunction = () => 2 + 2;
myFunction();
> 4
Nếu sử dụng cú pháp khối để xác định nội dung hàm mũi tên, bạn phải có return
rõ ràng, ngay cả khi nội dung hàm chỉ chứa một biểu thức duy nhất:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
Kiểm tra kiến thức
return
dùng để làm gì?