I feel like a beginner here. I don't quite get why this 2 codes behave differently. Can someone explain it please? I feel like i miss some JS mechanic here.
Code1:
function Car(){
var miles = 0;
function drive(dist){
miles = miles+dist;
}
return {
drive:drive,
miles:miles
}
}
var car = new Car;
car.drive(50);
Code2:
function Car(){
var miles = 0;
function drive(dist){
miles = miles+dist;
}
return {
drive:drive,
miles:function(){
return miles;
}
}
}
var car = new Car;
car.drive(50);
So it seams like for code1, JS creates a new scope/closure/whatever....value for miles. Maybe someone smart can provide some background to this behavior.
Fiddle: http://jsfiddle.net/P7Zqv/