JavaScript 1.2 อนุญาตให้กำหนดฟังก์ชันซ้อนอยู่ภายในฟังก์ชันอื่นได้ อย่างไรก็ตาม มีข้อจำกัดคือ ไม่สามารถประกาศฟังก์ชันภายในลูป (loops) หรือเงื่อนไข (conditionals) ได้ ข้อจำกัดเหล่านี้ใช้กับการประกาศฟังก์ชันด้วยคำสั่ง function statement เท่านั้น
ตัวอย่าง
ลองรันโค้ดด้านล่างเพื่อเรียนรู้วิธีการใช้งานฟังก์ชันซ้อนใน JavaScript:
<html>
<head>
<script>
function hypotenuse(a, b) {
function square(x) { return x * x; }
return Math.sqrt(square(a) + square(b));
}
function secondFunction() {
var result = hypotenuse(3, 4);
document.write(result);
}
</script>
</head>
<body>
<p>คลิกปุ่มด้านล่างเพื่อเรียกใช้ฟังก์ชัน</p>
<form>
<input type="button" onclick="secondFunction()" value="Find Hypotenuse">
</form>
</body>
</html>
คำอธิบาย: ฟังก์ชัน square ถูกประกาศภายใน hypotenuse ทำให้สามารถเข้าถึงได้เฉพาะภายในขอบเขตของฟังก์ชันแม่เท่านั้น ซึ่งช่วยลดการปนเปื้อนของเนมสเปซ (namespace pollution)