Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript

Fareez Ahmed
Fareez Ahmed
12,728 Points

bookmarklets as IIFEs

Hi, I came across this blog post:

http://blog.teamtreehouse.com/creating-bookmarklets-for-fun-and-profit

and I was wondering, why are a lot of bookmarklets written as IIFEs (Immediately Invoked Function Expressions). Can someone explain the logic behind this?

Thanks!

Dave McFarland

2 Answers

Dave McFarland
STAFF
Dave McFarland
Treehouse Teacher

IIFEs (Immediately Invoked Function Expressions) let you run code that doesn't interfere with what's called the global namespace. When you run a bookmarklet, you're executing JavaScript code on the page you are currently on -- that page may already have JavaScript programs running on it.

When you use an IIFE the variables you create are never exposed to any other JavaScript code on the page -- this means you can use variable names without worrying that you might use the same name as other code on the page. In other words, your code won't accidentally overwrite and ruin JavaScript code already running on the page.

More info here: Immediately Invoked Function Expression

Fareez Ahmed
Fareez Ahmed
12,728 Points

Interesting, thanks Dave McFarland! So what I'm deducing is that an IIFE is a type of closure?