In the following code, the line obj.sayhello() means that sayhello executes in the context / scope of obj. str is not defined (via var) in the sayhello method. JS will look up the variable in the scope i.e. in the obj which clearly has a str property. Why does the script throw a ReferenceError?
Uncaught
ReferenceError:stris not defined atObject.sayhello
var obj = {
str: "hello",
sayhello: function(){
return str;
}
};
obj.sayhello();