avatarSamantha Ming

Summary

The web content discusses the differences between dot notation and bracket notation in JavaScript for accessing object properties, recommending dot notation by default but using bracket notation when dealing with variables or keys that are not valid JavaScript identifiers.

Abstract

The provided web content delves into the nuances of accessing object properties in JavaScript using two distinct notations: dot notation and bracket notation. It emphasizes that while both methods can achieve the same result, the Airbnb JavaScript Style Guide suggests using dot notation as a default due to its readability and ease of typing. However, there are exceptions to this rule. Dot notation is limited to valid JavaScript identifiers and cannot be used with variables. In contrast, bracket notation is more versatile, allowing for the use of variable keys and keys that would be considered invalid identifiers in dot notation, such as those starting with a digit or containing special characters. The content also warns of potential debugging issues when using dot notation with variables, as it may lead to undefined properties or unintended behavior. The conclusion advises developers to use dot notation unless they are dealing with variables or invalid identifiers, in which case bracket notation is the appropriate choice.

Opinions

  • The author, Samantha Ming, advocates for following Airbnb's JavaScript Style Guide, which prefers dot notation for its clarity and efficiency unless the situation calls for bracket notation.
  • There is an acknowledgment that understanding when to use each notation can be confusing for learners, but the author simplifies this by providing clear rules and examples.
  • The author humorously points out common pitfalls, such as attempting to use quotes within bracket notation to access properties with special characters, which is not permitted.
  • A strong recommendation is made to use bracket notation when dealing with variables, emphasizing that failing to do so can result in undefined property access and debugging difficulties.
  • The author encourages readers to engage with the content on social media platforms and provides additional resources for further reading, indicating a desire to foster a community of learning and discussion around JavaScript best practices.

Dot notation vs Bracket notation

CodeTidbit by SamanthaMing.com

Both notations can access object properties. But the question is often which one should I use 🤔. Wonder no more, just follow Airbnb’s style guide. Always use Dot. And when you want to access object property with a variable, use Bracket 👍

// Dot notation vs Bracket notation
const variable = 'cookie';
const snack = {
  cookie: '🍪'
};
// ✅ Dot: access property
snack.cookie;
// ✅ Bracket: access property with variable
snack[variable];

Accessing Object Properties

There are 2 ways to access object properties. Dot and Bracket.

const obj = {
  name: 'value'
};
// Dot Notation
obj.name; // 'value'
// Bracket Notation
obj['name']; // 'value'

Dot Notation for the win

I remember when I was first learning this. Understanding the 2 different ways was simple. Nothing too complicated. But my concern was never about the different notations. My biggest dilemma was, WHICH SHOULD I USE?? 🤯

If you were like me! Here’s the breakdown. They both do the same. So here is the simple rule. By default, just use the Dot notation.

✅ Dot Notation 🏆

  • It’s a lot easier to read
  • It’s way faster to type.

Dot Notation’s Limitation

With any rule, there are always exceptions 😂. So let’s look at some of the limitations.

a. Issue working with Identifiers b. Issue working with Variables

a. Working with Identifiers

One of the major limits of using the Dot notations is that it only works with valid identifiers. First, let’ me define what is an identifier

An identifier is a sequence of characters in the code that identifies a variable, function, or property.

MDN web docs

The identifier has the following rules:

  • case sensitive
  • can contain Unicode letters
  • $, -, are allowed
  • Digits (0–9) are okay BUT may not start with a digit

So let’s sample some of these examples and see what happens when we use the Dot notation.

const obj = {
  123: 'digit',
  123name: 'start with digit',
  name123: 'does not start with digit',
  $name: '$ sign',
  name-123: 'hyphen',
  NAME: 'upper case',
  name: 'lower case'
};

Note:

You may notice some property names I had to include quotes. Example: 123name. I had to do that otherwise the object would be considered invalid and it would throw a Syntax Error.

Dot Notation

obj.123;      // ❌ SyntaxError
obj.123name;  // ❌ SyntaxError
obj.name123;  //'does not start with digit'
obj.$name;    //'$ sign'
obj.name-123;  // ❌ SyntaxError
obj.'name-123';// ❌ SyntaxError
obj.NAME; // ✅ 'upper case'
obj.name; // ✅ 'lower case'

See how I tried to be clever and use quotes in the obj.'name-123' example. Well, don't, cause it still won't work 😂.

Bracket Notation

But none of this is a problem for the Bracket Notation.

obj['123'];     // ✅ 'digit'
obj['123name']; // ✅ 'start with digit'
obj['name123']; // ✅ 'does not start with digit'
obj['$name'];   // ✅ '$ sign'
obj['name-123']; // ✅ 'does not start with digit'
obj['NAME']; // ✅ 'upper case'
obj['name']; // ✅ 'lower case'

Verdict

If you think you have an invalid JavaScript identifier as your property key, use the Bracket Notation 👍

b. Accessing Property with Variables

Another limitation of the Dot notation is working with variables. You definitely should use the Bracket Notation. Note! When you’re referencing a variable in the Bracket Notation, you need to skip the quote. That’s kinda how you know you’re dealing with a variable instead of accessing the property key.

const variable = 'name';
const obj = {
  name: 'value'
};
// Bracket Notation
obj[variable]; //'value'
// Dot Notation
obj.variable; // undefined

Undefined Property

One very important thing I want to point out. You will notice that if I try to use the Dot notation on the variable, it returns undefined. This is because when you try to access a property that doesn’t exist, it will return undefined.

const emptyObj = {};
obj.name; // undefined
obj['name']; // undefined

So here’s the watch-out part. Let’s return to our variable object example previously. If you used the Dot notation, it will just assume you’re trying to access the property with a valid JavaScript identifier. Because it’s returning something, you might think everything is working fine. Under the hood, yes it is. But if your intention is to use the variable, it might throw you off. This definitely can be a source of a debugging headache. So watch out for that!!

const variable = 'name';
const obj = {
  name: 'value',
  variable: '👻'
};
// Bracket Notation
obj[variable]; //'value'
// Dot Notation
obj.variable; // '👻'

Verdict

Never use the Dot Notation when using a Variable

Conclusion

Knowing the limitations of Dot Notation, let’s update our rule.

Use the Dot Notation. But if you’re dealing with invalid identifier or variables, use the Bracket notation.

Resources

Share

Thanks for reading ❤

Say Hello! Instagram | Facebook | Twitter | SamanthaMing.com | Blog

JavaScript
Programming
Javascript Tips
Front End Development
Software Engineering
Recommended from ReadMedium