Book Image

Learning jQuery : Better Interaction Design and Web Development with Simple JavaScript Techniques

Book Image

Learning jQuery : Better Interaction Design and Web Development with Simple JavaScript Techniques

Overview of this book

Table of Contents (18 chapters)
Learning jQuery
Credits
About the Authors
About the Reviewers
Preface

Inner Functions


JavaScript is fortunate to number itself among the programming languages that support inner function declarations. Many traditional programming languages, such as C, collect all functions in a single top-level scope. Languages with inner functions, on the other hand, allow us to gather small utility functions where they are needed, avoiding namespace pollution.

An inner function is simply a function that is defined inside of another function. For example:

function outerFun() {
  function innerFun() {
    alert('hello');
  }
}

The innerFun() is an inner function, contained within the scope of outerFun(). This means that a call to innerFun() is valid within outerFun(), but not outside of it. The following code results in a JavaScript error:

function outerFun() {
  function innerFun() {
    alert('hello');
  }
}
innerFun();

We can trigger the alert, though, by calling innerFun() from within outerFun():

function outerFun() {
  function innerFun() {
    alert('hello');
  }
  innerFun();
}
outerFun();

This technique is especially handy for small, single-purpose functions. For example, algorithms that are recursive but have a non-recursive API wrapper are often best expressed with an inner function as a helper.