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?

1
  • s/fn/counter/ outside of the outer anonymous function.
    – user7043
    Apr 4, 2012 at 19:42

1 Answer 1

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.

1
  • 4
    You could also just call it a free variable
    – Raynos
    Apr 4, 2012 at 19:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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