Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Learning  jQuery : Better Interaction Design and Web Development with Simple JavaScript Techniques

You're reading from   Learning jQuery : Better Interaction Design and Web Development with Simple JavaScript Techniques Better Interaction Design and Web Development with Simple JavaScript Techniques

Arrow left icon
Product type Paperback
Published in Jul 2007
Publisher Packt
ISBN-13 9781847192509
Length 380 pages
Edition Edition
Languages
Tools
Arrow right icon
Toc

Table of Contents (18) Chapters Close

Learning jQuery
Credits
About the Authors
About the Reviewers
Preface
1. Getting Started 2. Selectors—How to Get Anything You Want FREE CHAPTER 3. Events—How to Pull the Trigger 4. Effects—How to Add Flair to Your Actions 5. DOM Manipulation—How to Change Your Page on Command 6. AJAX—How to Make Your Site Buzzword-Compliant 7. Table Manipulation 8. Forms with Function 9. Shufflers and Rotators 10. Plug-ins 1. Online Resources 2. Development Tools 3. JavaScript Closures

Appendix C. JavaScript Closures

 

Let’s close our eyes together

Now can you see how good it’s going to be?

 
 -- Devo, “Pink Jazz Trancers”

Throughout this book, we have seen many jQuery methods that take functions as parameters. Our examples have thus created, called, and passed around functions time and again. While usually we can do this with only a cursory understanding of the inner JavaScript mechanics at work, at times side effects of our actions can seem strange if we do not have knowledge of the language features. In this appendix, we will study one of the more esoteric (yet prevalent) types of functions, called closures.

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.

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime
Banner background image