In this scenario, note that I have first declared the value of 'this.a' to be 3, passed a parameter to a function, in which 'this.a' is changed to 5 and then triggered an alert on 'this.a'.
You might expect the alert to show 5, but it doesn't. Why?
The answer is because 'this' is referring to two things in this code.
The first assignment of 3 is outside the function, so it will refer to itself in that context.
The second assignment, inside the function, is referring to the function itself.
The value of 'this' varies depending on context. Try to think of who 'me' would be whenever you use it.