Dot and Square Bracket Notation

前端 未结 2 2027
后悔当初
后悔当初 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 }
    

提交回复
热议问题