DEV Community

Cover image for JavaScript Console Methods: Beyond console.log()
Daniel Bemsen Akosu
Daniel Bemsen Akosu

Posted on • Edited on

JavaScript Console Methods: Beyond console.log()

As a JavaScript developer, you are likely familiar with the console.log() method. This method is used to output messages to the browser console, which is an essential tool for debugging and troubleshooting your code. However, console.log() is just one of many console methods that are available in JavaScript. This article will explore some of the more advanced console methods you can use to debug, analyze, and optimize your JavaScript code. Whether you are a beginner or an experienced developer, you will surely find some useful tips and tricks for improving your JavaScript development workflow. So, let's dive into JavaScript console methods beyond console.log()!

What is a console

In the context of web development, a console is a tool provided by web browsers that allow developers to view and interact with the code that is running on a webpage. The console can be opened in most modern web browsers by pressing the F12 key or right-clicking on a webpage and selecting "Inspect" from the context menu. Once the console is open, developers can use it to view error messages, output messages for debugging purposes, and execute JavaScript code directly in the browser. A console is an essential tool for web development, and understanding how to use it effectively can help developers to create more efficient and reliable web applications.

console.log

console.log() is a console method in JavaScript that is used to output messages to the browser console. It takes one or more values as input and displays them in the console. The input can be any type of JavaScript object, including strings, numbers, arrays, objects, and functions.
Here are some examples of how console.log() can be used for debugging and analyzing code:

a. Debugging variables: console.log() can be used to output the value of variables at various points in your code to see if they have the values you expect. For example:

    let x = 10;
    let y = 20;
    let z = x + y;
    console.log('The value of z is:', z); // Output: "The value of z is: 30"

Enter fullscreen mode Exit fullscreen mode

image showing console.log

b. Testing conditions: You can use console.log() to output the result of conditions to see if they evaluate to true or false. For example:

    let a = 10;
    let b = 20;
    console.log(a > b); // Output: false

Enter fullscreen mode Exit fullscreen mode

image showing console.log

c. Debugging loops: You can use console.log() to output the value of a variable in each iteration of a loop to see if it has the expected value. For example:

    for (let i = 0; i < 5; i++) {
      console.log('The value of i is:', i);
    }

Enter fullscreen mode Exit fullscreen mode

image showing console.log

d. Logging messages: console.log() can also be used to log messages to the console to provide additional information about what your code is doing. For example:

    const greet = (name) => {
      console.log('Hello, ' + name + '!');
    }
    greet('Alice'); // Output: "Hello, Alice!"

Enter fullscreen mode Exit fullscreen mode

image showing console.log

e. Debugging functions: console.log() can be used to output the result of a function or to log messages inside a function to see how it's working. For example:

    const addNumbers = (a, b) => {
      console.log('The value of a is:', a);
      console.log('The value of b is:', b);
      return a + b;
    }

    let result = addNumbers(10, 20);
    console.log('The result is:', result); // Output: "The result is: 30"

Enter fullscreen mode Exit fullscreen mode

image showing console.log

These are just a few examples of how console.log() can be used to debug and analyze code. There are many more ways to use console.log() depending on your needs as a developer.

console.error

console.error() is a console method in JavaScript that is used to log error messages to the console. It works like console.log() but is specifically designed for logging errors. When console.error() is called, it prints an error message to the console along with a red error icon. This makes it easy to identify errors in your code and helps you quickly locate and fix them.
Here are some examples of how console.error() can be used to log error messages to the console:

a. Catching errors in a try-catch block: You can use console.error() to log error messages when an exception is caught in a try-catch block. For example:

    try {
      // some code that might throw an error
    } catch (error) {
      console.error('An error occurred:', error.message);
    }

Enter fullscreen mode Exit fullscreen mode

b. Logging custom error messages: You can use console.error() to log custom error messages to the console when your code encounters an error. For example:

    const divide = (a, b) => {
      if (b === 0) {
        console.error('Attempt to divide by zero');

      } else {
        return a / b;
      }
    } 
    divide(10, 0);

Enter fullscreen mode Exit fullscreen mode

image showing console.error

console.warn

console.warn() is another console method in JavaScript that allows you to log warning messages to the console. The warning message is displayed with a yellow warning icon next to it, indicating that there is a potential problem or issue in the code. The purpose of console.warn() is to alert the developer to potential issues in the code that could cause problems or errors, without necessarily indicating a critical failure. here are some examples of how console.warn() can be used to log warning messages to the console:

a. Alerting the developer to potential issues: You can use console.warn() to log warning messages to the console when there are potential issues or problems in the code that need to be addressed. For example:

    const divide = (a, b) => {
      if (b === 0) {
        console.warn('Attempting to divide by zero');
      }
      return a / b;
    }

   divide(10, 0);


Enter fullscreen mode Exit fullscreen mode

image showing console.warn

b. Notifying the developer of deprecated features: You can also use console.warn() to notify the developer when they are using deprecated features or APIs that are no longer recommended. For example:

    const greet = (name) => {
      console.warn('This function is deprecated. Use greet2 instead.');
      console.log('Hello, ' + name);
    }

    greet('John'); 

Enter fullscreen mode Exit fullscreen mode

image showing console.warn

console.info()

console.info() is a method in the JavaScript console object that logs an informational message to the console. In Firefox the information message is displayed with an "i" icon next to it, indicating that it contains helpful information that may be of interest to the developer. The purpose of console.info() is to provide additional context and details about the code, without necessarily indicating an error or warning. here are some examples of how console.info() can be used to log informative messages to the console:

Displaying information about an API response

    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => {
        console.info('Received data from API:', data);
        // Process data...
      })
      .catch(error => {
        console.error('Error fetching data from API:', error);
      });

Enter fullscreen mode Exit fullscreen mode

Displaying a message when a particular feature is enabled:

  console.info('Feature X is enabled');

Enter fullscreen mode Exit fullscreen mode

image showing console.info

console.table

console.table() is a method in the JavaScript console object that allows you to display tabular data in a visually appealing and interactive format. It takes an array or an object as input and generates a table with columns for each property of the object or element of the array.
Here is an example of how console.table() can be used to display data in a tabular format and what the result will look like in the console:

    let myData = [
      { name: 'John', age: 35, gender: 'Male' },
      { name: 'Jane', age: 28, gender: 'Female' },
      { name: 'Bob', age: 42, gender: 'Male' }
    ];

    console.table(myData);

Enter fullscreen mode Exit fullscreen mode

Result

image showing console.table

console.group() and console.endGroup()

console.group() and console.groupEnd() are methods in the JavaScript console that allow you to group console messages together, making it easier to organize and analyze the output.
When you call console.group(), it creates a new group in the console, which can be collapsed or expanded by the user. All subsequent console messages that are logged after calling console.group() will be displayed as part of the group until console.groupEnd() is called to close the group. Any console message or method called after console.group() will be displayed within the group until it is closed using console.groupEnd().
Here is an example of how console.group() and console.groupEnd() can be used together:

    console.group('Group 1');
    console.log('Message 1');
    console.log('Message 2');
    console.groupEnd();

    console.group('Group 2');
    console.log('Message 3');
    console.group('Group 3');
    console.log('Message 4');
    console.groupEnd();
    console.groupEnd();

    console.log('Message 5');

Enter fullscreen mode Exit fullscreen mode

we create three groups of console messages. The first group contains two messages (Message 1 and Message 2). The second group contains one message (Message 3) and another group (Group 3) that contains one message (Message 4). Finally, we close all the groups and add one more message (Message 5) that is not part of any group.
When we run this code, we get the following output in the console:

image showing console.group

console.assert()

console.assert() is a console method in JavaScript that is used to log an error message to the console if the assertion being made is false. It is similar to an if statement that throws an error if the condition it is checking is false.
The syntax for using console.assert() is console.assert(assertion, message), where assertion is the condition to be checked and message is the error message that will be displayed in the console if the assertion is false.
If the assertion is true, nothing is logged to the console. However, if the assertion is false, an error message is logged to the console, along with the message passed to the method.
console.assert() is a useful tool for debugging and testing code, as it allows developers to quickly identify and fix errors in their code.
Here's an example of how console.assert() can be used:

    let num1 = 10;
    let num2 = 5;

    console.assert(num1 > num2, "num1 should be greater than num2");

    // Output: nothing is logged to the console, since the assertion is true

    num2 = 15;

    console.assert(num1 > num2, "num1 should be greater than num2");

    // Output: an error message is logged to the console, since the assertion is false: "Assertion failed: num1 should be greater than num2"

Enter fullscreen mode Exit fullscreen mode

image showing console.assert

console.dir()

The console.dir() method in JavaScript is used to display an interactive list of the properties of a specified JavaScript object. It displays the object as a hierarchical list of properties, with each property listed in the format property: value.
The console.dir() method is often used to inspect complex objects, such as arrays, functions, or DOM elements, and to see all of their properties and methods in a more organized way. It can help you understand the structure of an object, as well as the available methods and properties that you can use.
The output of console.dir() can be expanded and collapsed, and you can navigate through the list of properties using the arrow keys. It also provides additional information about each property, such as its data type, value, and attributes.
Here are some examples of how console.dir() can be used to display the properties of an object:

Displaying the properties of an array

    const myArray = [1, 2, 3, 4, 5];
    console.dir(myArray);

Enter fullscreen mode Exit fullscreen mode

This will output the following list in the console:

image showing console.dir

Displaying the properties of a function


    const myFunction = () => {
      this.name = 'John';
      this.age = 30;
    }

    console.dir(myFunction);

Enter fullscreen mode Exit fullscreen mode

Result

image showing console.dir

console.time() and console.timeEnd()

console.time() and console.timeEnd() are console methods that allow you to measure the time it takes for a piece of code to execute.

console.time(label) starts a timer with an associated label. The label parameter is optional, and if provided, it is a string that will be used to identify the timer. Multiple timers can be running simultaneously, as long as they have different labels.

console.timeEnd(label) stops the timer with the associated label and logs the time it took to complete the associated code block to the console. The label parameter is also optional, and if provided, it must match the label of the timer you want to stop. If the label does not match any running timer, the method will not do anything.

When console.timeEnd() is called, the time elapsed since console.time() was called with the same label is calculated and displayed in the console, along with the label and the elapsed time in milliseconds.
These methods are useful for measuring the performance of code and identifying bottlenecks that may be slowing down your application.
Here is an example of how to use console.time() and console.timeEnd():

    console.time('sum');

    let sum = 0;
    for (let i = 1; i <= 100000; i++) {
      sum += i;
    }

    console.timeEnd('sum');

Enter fullscreen mode Exit fullscreen mode

we start a timer with console.time('sum'), and then execute a loop that adds each number from 1 to 100000 to a sum variable. After the loop is done, we stop the timer with console.timeEnd('sum'). The string passed to both methods ('sum' in this case) is used as a label to identify the timer in the console.
When we run this code in the console, we should see something like this:

image showing console.time

This means that it took about 5.6699 milliseconds to execute the loop and calculate the sum. The actual time may vary depending on the computer and browser being used. By using console.time() and console.timeEnd(), we can get a sense of how long it takes for a particular piece of code to run, and use that information to optimize our code and make it run more efficiently.

console.count()

console.count() is a console method in JavaScript that logs the number of times it has been called at a particular point in the code. It is useful for counting the number of times a particular function or event has occurred during the execution of the code.

When the console.count() method is called for the first time with a given label, it creates a new counter with a value of 1. Each subsequent call to console.count() with the same label increments the counter by 1 and logs the updated count to the console.

This method is particularly useful when debugging code to identify how many times a certain function or event is being called, and can help developers to identify potential performance issues or areas of the code that may need further optimization.

Here is an example of how console.count() can be used:

    const myFunction = () => {
      console.count('myFunction has been called');
      // function code goes here
    }

    myFunction(); // logs 'myFunction has been called: 1'
    myFunction(); // logs 'myFunction has been called: 2'
    myFunction(); // logs 'myFunction has been called: 3'

Enter fullscreen mode Exit fullscreen mode

image showing console.count

each time myFunction() is called, console.count() logs the count to the console along with the label "myFunction has been called". The count is incremented with each subsequent call to myFunction().

console.countReset()

console.countReset() is a method that resets the counter for the given label that was previously set by console.count(). The console.count() method can be used to count the number of times a specific piece of code has been executed. Sometimes, we may want to reset the count in order to start counting from scratch.

The console.countReset() method takes a label parameter that corresponds to the label parameter of the console.count() method. When console.countReset() is called with a specific label, it resets the count associated with that label to zero. If no label is provided, it resets the count for the default label, which is an empty string.

Here is an example of using console.count() and console.countReset() together:

    const myFunction = () => {
      console.count('myFunction has been called');
    }

    myFunction(); // logs "myFunction has been called: 1"
    myFunction(); // logs "myFunction has been called: 2"
    console.countReset('myFunction has been called');
    myFunction(); // logs "myFunction has been called: 1" again

Enter fullscreen mode Exit fullscreen mode

image showing console.countReset

we define a function myFunction() that uses console.count() to count the number of times it has been called. We call myFunction() twice, and each time the count is incremented. We then call console.countReset() with the label "myFunction has been called", which resets the count for that label to zero. Finally, we call myFunction() again, and the count starts again from one.

console.trace()

console.trace() is a console method that allows you to print a stack trace of the function calls that led to the current point of execution. It outputs a list of the functions in the order they were called, along with the filename and line number where each function was called.

The output of console.trace() can be useful for debugging because it can help you track down the source of an error or identify the sequence of function calls that led to a particular point in your code.

Here's an example of how to use console.trace():

    const func1 = () => {
      console.trace("func1");
    }

    const func2 = () => {
      func1();
    }

    const func3 = () => {
      func2();
    }

    func3();

Enter fullscreen mode Exit fullscreen mode

func3() calls func2(), which in turn calls func1(). When func1() is called, it calls console.trace("func1"), which will print a stack trace of the function calls that led to the current point of execution with the label "func1".
The output in the console would look something like this:

image showing console.trace

This output shows the sequence of function calls that led to the call to console.trace("func1"), with the function names and line numbers where each function was called.

console.debug()

console.debug() is a console method in JavaScript that is used for logging debug messages to the console. It works similarly to console.log(), but is specifically designed for debugging purposes.
Like console.log(), console.debug() accepts any number of arguments, including strings, numbers, and objects. It also supports string interpolation using template literals.
One key difference between console.debug() and console.log() is that console.debug() is typically used to log more detailed information about the state of a program or application during development. This may include information about the values of specific variables, the results of certain functions, or the outcome of particular operations.

While console.log() can be used for these purposes as well, console.debug() is often used to specifically indicate that a particular message is intended for debugging purposes only, rather than for production logging or reporting. It writes a message to the web console at the "debug" log level. This message will only appear to the user if the console is set to display debug output, and the log level is usually set in the console UI.

Here are a few examples of how console.debug() can be used:

Logging variable values:

    let x = 5;
    let y = 10;
    console.debug(`The value of x is ${x}, and the value of y is ${y}.`);

Enter fullscreen mode Exit fullscreen mode

Result

image showing console.debug

Logging debug-level information only in development mode:

const debugLog = (message) => {
   if (process.env.NODE_ENV === 'development') {
      console.debug(message);
   }
}
debugLog('This message will only be logged in development mode.');

Enter fullscreen mode Exit fullscreen mode

Output (if process.env.NODE_ENV is set to 'development'):

[DEBUG] This message will only be logged in development mode.
Enter fullscreen mode Exit fullscreen mode

console.profile() and console.profileEnd()

The console.profile() and console.profileEnd() methods are used to measure the performance of a specific section of code.
When the console.profile() method is called, it starts recording the performance data for the code that follows. The console.profileEnd() method is used to stop recording the performance data.
When the performance recording is stopped using console.profileEnd(), the data is displayed in a table in the console. This table displays information about the time it took for each function in the recorded section of code to execute, as well as the number of times each function was called.
Here's an example of how console.profile() and console.profileEnd() can be used to measure the performance of a function:

    const calculateSum = (num1, num2) => {
      console.profile('sum profile');
      let result = num1 + num2;
      console.profileEnd('sum profile');
      return result;
    }

    calculateSum(2, 3);

Enter fullscreen mode Exit fullscreen mode

image showing console.profile

When this code is run in the console, it will start profiling the function calculateSum() by calling console.profile() and passing in a name for the profile, in this case 'sum profile'. Then, the function will be executed and the time it takes to run will be measured. Finally, the profile will be stopped by calling console.profileEnd() and passing in the same name used for the start of the profile.

After running the code in the console, you can open the DevTools Performance tab to see the profiling results. The results will show how long it took to execute the function, as well as any other functions that were called during its execution.

console.clear()

The console.clear() method is used to clear the console of all previously logged output. This method is commonly used when you want to start debugging from a clean slate or if the console output becomes cluttered and difficult to read.
To use the console.clear() method, simply call it in your JavaScript code, like this:

 console.clear();    
Enter fullscreen mode Exit fullscreen mode

When this method is called, it will clear the console of all previously logged output, including logs, errors, warnings, tables, and any other output that may have been previously displayed.
It is important to note that calling console.clear() will not undo any changes to the state of your application. It simply clears the console window and makes it ready for new logs and messages to be displayed.

Conclusion

In conclusion, the console object in JavaScript provides a powerful tool for debugging and analyzing code in the browser.
Each method has its unique features and use cases, ranging from logging messages to the console, displaying data in a tabular format, grouping related messages, displaying call stacks, counting the number of times a piece of code is executed, and profiling code performance. Understanding how to use these methods effectively can greatly enhance a developer's productivity and efficiency when debugging and analyzing code.

Top comments (8)

Collapse
 
equiman profile image
Camilo Martinez

Excellen article! 👏👏👏

I would like to recommend a vscode extensions called Debug Snippets that include a lot of console snippets and wrappers for profile, group, and time

Collapse
 
danielepecora profile image
Daniele Pecora

Yes, I may have been falled in love with "console.profile"...

Collapse
 
danireptor profile image
Daniel Bemsen Akosu

you're not alone

Collapse
 
citronbrick profile image
CitronBrick

Thorough article. You can enable syntax highlighting for Dev.to posts using

(triple backtick) (name of language eg. javascript)
code
(triple backtick)

Collapse
 
danireptor profile image
Daniel Bemsen Akosu

oh, didn't know I could do that on Dev.to, let me try it out. Thank you.

Collapse
 
eltana profile image
Lotanna Kyrian A.

Nice read.

Collapse
 
danireptor profile image
Daniel Bemsen Akosu

Glad you find it helpful sir

Collapse
 
jity01 profile image
Jity Woldemichael

A really helpful read! I can't believe I've never used console.table before :0