3

In JavaScript, there is no such thing as a "private" variable. In order to achieve encapsulation and information hiding in JavaScript, I can wrap a variable inside a function closure, like so:

var counter = (function() {    
    var i = 0;
    var fn = {};
    fn.increment = function() { i++; };
    fn.get = function() { return i; };
    return fn;
{)();    
counter.increment();
counter.increment();
alert(counter.get()); // alerts '2'

Since I don't call i a private variable in JavaScript, what do I call it?

  • s/fn/counter/ outside of the outer anonymous function. – user7043 Apr 4 '12 at 19:42
7

According to wikipedia they're called "upvalues".

A closure allows a function to access variables outside its immediate lexical scope. An upvalue is a free variable that has been bound (closed over) with a closure. The closure is said to "close over" its upvalues.

Although it's probably better to wrongly call them private variables so people will understand what you mean.

  • 4
    You could also just call it a free variable – Raynos Apr 4 '12 at 19:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.