So let's say you have a really basic person object with two values and one function:
function personObject() {
this.name = 'First Name';
this.placeInLine = 1;
this.setPlaceInLine = function(place) {
this.placeInLine = place;
}
}
And we setup some variables like this:
var john = new personObject();
var bill = new personObject();
var message = "";
Now look at the three codes snippets below...
---Code #1---
if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John is not before Bill"; // because 1 is not less than 1
---Code #2---
bill.setPlaceInLine(2); // change Bill's place to 2 (instead of default of 1)
if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John is before Bill"; // because 1 less than 2;
---Code #3---
if(john.placeInLine < bill.setPlaceInLine(2)) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John is not before Bill": // why?
Is the .setPlaceInLine function being called after the comparison? Or is the act of running that function returning something that is then being compared to john.placeInLine?