Dot and Square Bracket Notation

前端 未结 2 2024
后悔当初
后悔当初 2020-12-04 03:55

I\'m trying to understand the difference between the Dot and the Square Bracket Notation. While going through various examples here on SO and on some other sites, I came acr

相关标签:
2条回答
  • 2020-12-04 04:30

    In dot notation, the name after the dot is the name of the property being referenced. So:

    var foo = "bar";
    var obj = { foo: 1, bar: 2 };
    
    console.log(obj.foo) // = 1, since the "foo" property of obj is 1,
                         //      independent of the variable foo
    

    However, in square-bracket notation, the name of the property being referenced is the value of whatever is in the square brackets:

    var foo = "bar";
    var obj = { foo: 1, bar: 2 };
    
    console.log(obj[foo])   // = 2, since the value of the variable foo is "bar" and
                            //      the "bar" property of obj is 2
    
    console.log(obj["foo"]) // = 1, since the value of the literal "foo" is "foo" and
                            //      the "foo" property of obj is 1
    

    In other words, dot-notation obj.foo is always equivalent to obj["foo"], while obj[foo] depends on the value of the variable foo.


    In the specific case of your question, note the differences between dot notation and square-bracket notation:

    // with dot notation
    var obj = { name: "John Doe", age: 30 };
    var key = "age";
    var value = 60;
    
    obj.key = value; // referencing the literal property "key"
    console.log(obj) // = { name: "John Doe", age: 30, key: 60 }
    
    
    // with square bracket notation
    var obj = { name: "John Doe", age: 30 };
    var key = "age";
    var value = 60;
    
    obj[key] = value; // referencing property by the value of the key variable ("age")
    console.log(obj)  // = { name: "John Doe", age: 60 }
    
    0 讨论(0)
  • 2020-12-04 04:34

    Accessing/Creation of properties from/in a JavaScript object can be done in two ways

    1. Using Dot notation
    2. Using Square Bracket notation

    Whenever some property is not defined i.e. not present in the object and you try to access it, you will get undefined (obviously, because it's not there).

    So, in the first example you are accessing a property and in the second example you are creating a property. Therefore, replacing the notation did not affect the code in the second example.

    0 讨论(0)
提交回复
热议问题