Trong JavaScript, PL / SQL và một số ngôn ngữ khác, các hàm có thể được lồng nhau, tức là được khai báo trong một hàm khác. Điều này có thể được sử dụng để phá vỡ một chức năng lớn thành các phần nhỏ hơn, nhưng giữ các phần đó trong bối cảnh của chức năng lớn hơn.
function doTooMuch() {
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
// doTooMuch body
doSomething();
doSomethingElse();
doYetAnotherThing();
}
Trong một số trường hợp, khi các hàm nhỏ hơn đó không sử dụng các biến cục bộ của hàm lớn hơn, điều này có thể dễ dàng thay đổi thành phiên bản mà tất cả các hàm không được kiểm tra.
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
function doTooMuch() {
doSomething();
doSomethingElse();
doYetAnotherThing();
}
Giả sử rằng các hàm lồng nhau này sẽ không được sử dụng ở bất kỳ nơi nào khác, tốt hơn là giữ chúng trong bối cảnh của hàm lớn hay nó xấu bởi vì đây chính xác là điều làm cho hàm lớn, tốt, lớn?