DEV Community

Cover image for JavaScript Naming Conventions: A Guide for Variable and Function Naming
Emma Richardson
Emma Richardson

Posted on

JavaScript Naming Conventions: A Guide for Variable and Function Naming

Naming conventions in JavaScript are crucial to writing clean, readable, and maintainable code. Whether you’re working on a personal project or collaborating with a team, consistent and meaningful names enhance code quality, improve debugging efficiency, and reduce the chance of introducing errors.

1. Use Descriptive and Meaningful Names

Names in JavaScript should be clear and descriptive, making it easy for others to understand what the code represents. Avoid short, ambiguous names like x or y, unless they’re used in specific, small contexts (e.g., loop counters). Instead, opt for names that describe the purpose or content of the variable or function.

Bad Example:

let x = 10; // It's unclear what 'x' represents 
Enter fullscreen mode Exit fullscreen mode

Good Example:

let userAge = 10; // Clearly indicates that the variable holds a user's age
Enter fullscreen mode Exit fullscreen mode

This rule also applies to functions. Always give your functions names that reflect their actions.

Example:

function calculateTotal(price, tax) {
 return price + tax; 
} 
Enter fullscreen mode Exit fullscreen mode

In the above example, the function name calculateTotal clearly indicates its purpose — calculating a total based on inputs like price and tax.

2. Use camelCase for Variables and Functions

JavaScript follows the convention of using camelCase for naming variables and functions. In camelCase, the first letter of the first word is lowercase, while the first letter of each subsequent word is capitalized.

Example:

let userName = "John Doe"; // Variable using camelCase 
function getUserProfile() {
 // Function name follows camelCase 
 return database.fetchUser(); 
} 
Enter fullscreen mode Exit fullscreen mode

Using camelCase makes variable and function names uniform and easier to read. This convention is commonly used for JavaScript’s built-in functions as well.

3. Use PascalCase for Class Names

Classes and constructor functions should use PascalCase, where the first letter of every word is capitalized. This naming convention helps distinguish classes from regular functions and variables.

Example:

class UserProfile { 
  constructor(name, age) { 
    this.name = name;  
    this.age = age; 
   } 
} 
let user = new UserProfile("Alice", 25); 
Enter fullscreen mode Exit fullscreen mode

PascalCase is also used in some frameworks and libraries for naming components (e.g., React components).

4. Use UPPER_SNAKE_CASE for Constants

Constants should be written in UPPER_SNAKE_CASE, where all letters are capitalized and words are separated by underscores. This signals that the value of the constant should not change throughout the program.

Example:

const MAX_LOGIN_ATTEMPTS = 5; 
const API_URL = "https://api.example.com"; 
Enter fullscreen mode Exit fullscreen mode

By using UPPER_SNAKE_CASE for constants, you make it easier for other developers to recognize important, unchanging values in your code.

5. Boolean Variables Should Use Prefixes Like is, has, or should

When naming Boolean variables, use prefixes like is, has, or should to indicate that the value represents a true/false condition. This improves the clarity of conditional statements and Boolean logic.

Example:

let isLoggedIn = true; 
let hasAccess = false; 
let shouldDisplayWarning = false; 
Enter fullscreen mode Exit fullscreen mode

By adopting this convention, your code becomes self-explanatory and the intent of Boolean variables is clear.

6. Avoid Reserved Keywords

JavaScript has a list of reserved keywords that cannot be used as variable or function names, such as let, class, function, const, and return. Using these reserved words will result in syntax errors.

Example:

//Bad: Using 'class' as a variable name will cause an error 
let class = "Math"; // Syntax error 

// Good: Use descriptive names instead 
let subjectClass = "Math";
Enter fullscreen mode Exit fullscreen mode

Always double-check that your chosen names are not reserved keywords to avoid unexpected issues in your code.

7. Use Verb-Noun Pairs for Function Names

Function names should generally start with a verb to indicate the action they perform. If appropriate, combine the verb with a noun to further describe the function’s purpose (e.g., getUserData, setUserName).

Example:

 function getUserData() { 
   // Code to fetch user data
 } 

function setUserProfile(profile) { 
   // Code to update user profile 
}
Enter fullscreen mode Exit fullscreen mode

This practice enhances the readability of your code by making the intent of each function immediately clear.

8. Avoid Single-Letter Variable Names Except for Loop Counters

The only exception for using single-letter names like x or y, is when you’re using short names for loop counters or temporary variables in small code blocks.

for (let i = 0; i < 10; i++) { 
   console.log(i); // Using 'i' as a loop counter 
}
Enter fullscreen mode Exit fullscreen mode

While short names are acceptable in small, self-contained contexts like loops, prefer more descriptive names in general code.

9. Avoid Magic Numbers and Strings

“Magic numbers” or “magic strings” are hard-coded values that lack context or explanation. Avoid using them directly in your code. Instead, store them in well-named constants to provide clarity.

Bad Example:

if (userAge > 18) { 
   // What does 18 represent? 
}
Enter fullscreen mode Exit fullscreen mode

Good Example:

const MINIMUM_AGE = 18; 
if (userAge > MINIMUM_AGE) { 
  // The meaning of '18' is now clear 
} 
Enter fullscreen mode Exit fullscreen mode

By assigning such values to descriptive constants, your code becomes more understandable and easier to maintain.

10. Be Consistent Across Your Codebase

Consistency is key in any programming language. Stick to the same naming conventions across your entire codebase to make your code more predictable and easier to understand. For example, if you’re using camelCase for variables and function names, avoid mixing in snake_case or PascalCase for the same types of elements.

Bad Example:

let user_profile = {}; // Using snake_case for variable names 
let userProfile = {}; // Mixing camelCase and snake_case 
Enter fullscreen mode Exit fullscreen mode

Good Example:

 let userProfile = {}; // Consistently using camelCase
Enter fullscreen mode Exit fullscreen mode

Maintaining consistent naming across the project makes your codebase cleaner and more navigable for anyone who works on it.

11. File and Directory Naming (kebab-case)

File names should be descriptive and use kebab-case (lowercase with words separated by hyphens) to improve readability, especially when working with larger projects or frameworks. This makes file names easy to read and avoids issues with case-insensitive file systems (like in Windows).
Example:

user-profile.js 
app-config.js
Enter fullscreen mode Exit fullscreen mode

This makes it easier to understand the file’s purpose at a glance, and the use of kebab-case avoids issues with case-insensitive file systems.

12. Use Naming Conventions for Asynchronous Functions

When dealing with asynchronous functions or promises, include a clear indication in the function name that the function is asynchronous. For example, prefixing async functions with fetch, load, or getAsync can signal to other developers that the function involves asynchronous operations.

Example:

async function fetchUserData() { 
  const response = await fetch("/api/user"); 
  return response.json(); 
}
Enter fullscreen mode Exit fullscreen mode

This makes it clear that the function includes asynchronous behavior, reducing confusion for anyone reading or working with your code.

13. Private Properties and Methods:

Use underscores (_) as a prefix for private properties and methods, though modern JavaScript also supports using # for private fields. This signifies that these fields or methods are not meant to be accessed directly outside of the class.

Example:

class User { 
  constructor(name) {
   this._name = name; // private property 
 } 
_logName() { 
  console.log(this._name); // private method 
  } 
}
Enter fullscreen mode Exit fullscreen mode

14. Namespaces:

For large projects, use namespaces to group related functions or variables. This prevents name collisions and organizes code better.

Example:

const UserUtils = { 
  getUserFullName(user) {  
    return `${user.firstName} ${user.lastName}`; 
  }  
};
Enter fullscreen mode Exit fullscreen mode

Complete article here: (https://medium.com/javascript-in-plain-english/javascript-naming-conventions-a-guideline-for-readable-and-maintainable-code-550c1620f04a)

Top comments (0)