Practical Closure

by Shane Porter

JavaScript

function createStore() {

    // "private"
	var data = {};
    
	return function(key, val) {        			
        
        return val === undefined 
			? data[key]			// we are getting
			: data[key] = val;  // we are setting
        
    };
    
}

var store = createStore();

console.log('get foo:', store('foo'));
console.log('set foo:', store('foo', 'bar'));
console.log('get foo:', store('foo'));
console.log('store data?', store.data);