When you use dot notation, key
means the actual property in the object, which will not be there. So, undefined
is returned which is not equal to true
.
When you use []
notation you are accessing the property in the object with the name in the variable key
. So, that will work.
For example,
var myObj = {
myVar : 1
};
for (var key in myObj) {
console.log(key);
console.log(myObj.key);
console.log(myObj[key]);
}
This will print,
myVar
undefined
1
Because, myObj
has no member named key
(myObj.key
tries to get the member with the name key
) and in the next case, myObj
has a member named myVar
(myObj[key]
tries to get the member with the value in key
).
Dot Notation
jslint prefers dot notation.
[] Notation
This offers flexibility. You can dynamically access the members with a variable.