Câu lệnh return trong JavaScript chỉ định giá trị muốn trả về. Bên trong function, giá trị được trả về cho caller (người gọi).
Ví dụ
<html>
<body>
<script>
function multiply(num1, num2) {
return num1 * num2;
}
var result = multiply(5, 10);
document.write("Multiplication: " + result); // 50
</script>
</body>
</html>
Đặc điểm quan trọng
returnkết thúc function ngay lập tức - code sau không chạy.- Nếu không có
returnhoặcreturn;không giá trị → trả vềundefined. - Constructor (
new Fn()):returnobject → trả object đó;returnprimitive → bỏ qua, trảthis. returnchỉ hợp lệ bên trong function (global scope → SyntaxError).
Các pattern phổ biến
// 1. Early return (guard clause) - giảm nesting
function process(user) {
if (!user) return null;
if (!user.active) return null;
// main logic...
return user.data;
}
// 2. Return object literal (cần wrap () cho arrow)
const createUser = (name, age) => ({ name, age, id: Date.now() });
// 3. Implicit return arrow function (expression body)
const double = x => x * 2;
// 4. Return function (higher-order function)
function multiplier(factor) {
return function(x) { return x * factor; };
}
const double = multiplier(2);
double(5); // 10
// 5. Return this (method chaining / fluent API)
class Builder {
setName(name) { this.name = name; return this; }
setAge(age) { this.age = age; return this; }
build() { return new User(this); }
}
new Builder().setName("A").setAge(20).build();
Return trong Async Function
async function fetchData() {
const res = await fetch('/api/data');
return res.json(); // Trả về Promise resolve với data
}
// Caller
fetchData().then(data => console.log(data));
Lưu ý
- Luôn return consistent type (tránh return string lúc, number lúc khác).
- Void function (không return) nên không có
return;cuối (redundant). returntrongfinallyblock ghi đèreturntrongtry/catch.