Sử dụng return
để chỉ định giá trị mà hàm sẽ tạo ra làm giá trị cuối cùng
kết quả. Khi trình thông dịch gặp câu lệnh return
, hàm chứa câu lệnh đó sẽ kết thúc ngay lập tức và giá trị được chỉ định sẽ được trả về ngữ cảnh nơi hàm được gọi:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
Bạn có thể coi một hàm trả về giá trị 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 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 có thể dẫn đến cảnh báo (nhưng không phải lỗi) trong một số bảng điều khiển phát triển của 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 phải bất kỳ mã nào theo sau câu lệnh return
theo tuần tự:
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."
Việc "đường ngắn" một hàm bằng cách sử dụng return
sớm 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 xác định liệu giá trị được truyền có phải là một chuỗi chứa năm
hoặc nhiều ký tự hơn. Nếu giá trị được truyền không phải là một chuỗi cố định, 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 là duy nhất ở chỗ từ khoá return
được ngụ ý khi phần nội dung hàm mũi tên chứa một biểu thức duy nhất và không có cú pháp khối:
const myFunction = () => 2 + 2;
myFunction();
> 4
Nếu bạn sử dụng cú pháp khối để xác định nội dung hàm mũi tên, return
rõ ràng
là bắt buộc, ngay cả khi phần 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 mức độ hiểu biết
return
dùng để làm gì?