difference between "." & "[]"
- 17
- 3
-
Please, copy and paste your code rather than using screenshots. – chrslg Oct 01 '22 at 16:06
1 Answers
You have no "key" attribute to your object. Hence the undefined. object.key would be defined only if your object contained a 'key' field. object.afaque for example is 95. But it needs to be literal afaque. You cannot access a field with . operator from a variable containing field name. You can do that with '[]' operator tho.
What you want to do is probably
for(let key in object){
console.log("Marks of", key, "are", object[key]);
}
Difference between both is that one precisely.
in A[B], B is an expression that is evaluated to a key (a string in your case), and A[B] is the value associated to that key in A. If you wanted to use A[B] notation with a static field name, you would need to enclose that field name into double quotes. Because it is a string value.
object["lafaque"] for example.
in A.B, B is an attribute name. It is part of javascript syntax. Like a variable name for example. Like in the expression key=12;. Typing that, you expect the variable key to be set to 12. Not the variable afaque because value of key would be "afaque". key in both key=12 or object.key are not strings. It is the "key" identifier, parsed and interpreted by the language as a variable name in the 1st case, or a field name in the 2nd.
in object["lafaque"], "lafaque" is a string. As in object["la"+"faque"] or object[key] or object[convolutedWay("to", compute, "a string")]
- 9,023
- 5
- 17
- 31
![difference between "." & "[]"](../../images/3855879370.webp)