Strict Mode in JavaScript

Strict mode is a feature introduced in ECMAScript 5 that allows you to opt into a restricted version of JavaScript, enforcing stricter rules and providing better error handling. Understanding strict mode is essential for writing cleaner, safer, and more reliable JavaScript code. In this chapter, we'll explore strict mode from its basics to more advanced concepts, covering everything you need to know.

Introduction to Strict Mode

Strict mode is a way to opt into a stricter set of rules for JavaScript. It helps catch common coding errors and enforce best practices, resulting in more robust code

Enabling Strict Mode

You can enable strict mode at the beginning of a script or a function by adding a "use strict"; directive.

Enabling Strict Mode Globally

				
					"use strict";

// Code in strict mode

				
			

Enabling Strict Mode Locally

				
					function exampleFunction() {
    "use strict";

    // Code in strict mode
}

				
			

Strict Mode Restrictions

Strict mode introduces several restrictions and changes in JavaScript’s behavior.

Implicit Global Variables: Variables without var, let, or const are not allowed in strict mode.

				
					"use strict";

x = 10; // Throws ReferenceError: x is not defined

				
			

Octal Numeric Literals: Octal literals are not allowed in strict mode.

				
					"use strict";

var octalNum = 010; // Throws SyntaxError: Octal literals are not allowed in strict mode.

				
			

Benefits of Strict Mode

Strict mode provides several benefits for JavaScript developers.

  • Better Error Handling: Strict mode catches common coding errors and throws more informative errors.

  • Prevents Silent Errors: In non-strict mode, some errors may go unnoticed, leading to unexpected behavior. Strict mode helps prevent silent errors.

  • Optimizes Code: Strict mode helps optimize JavaScript code by eliminating certain JavaScript pitfalls.

Strict Mode in Practice

Using strict mode can improve the quality of your JavaScript code.

				
					"use strict";

function divide(a, b) {
    return a / b;
}

console.log(divide(10, 0)); // Throws TypeError: Cannot divide by zero

				
			

Explanation: In non-strict mode, dividing by zero would result in Infinity, but in strict mode, it throws a TypeError instead, making the error more apparent.

Advanced Topics

Strict Mode in Modules

When using ES6 modules, strict mode is automatically enabled by default. This means that all code within modules adheres to strict mode rules without the need for an explicit "use strict"; directive.

				
					// module.js
export function exampleFunction() {
    console.log("Executing in strict mode");
}

				
			

In the above example, exampleFunction is automatically executed in strict mode because it’s part of an ES6 module.

In the above example, accessing arguments and caller within exampleFunction would throw a TypeError in strict mode. Instead, you should use the named parameters a and b to access the function arguments.

These restrictions help promote better coding practices and avoid potential pitfalls associated with accessing arguments and caller properties.

Function.arguments in Strict Mode:

In strict mode, accessing Function.arguments directly within a function is not allowed. Let’s see an example:

				
					"use strict";

function sum(a, b) {
    console.log(arguments); // Throws a TypeError in strict mode
    return a + b;
}

console.log(sum(1, 2)); // Outputs: Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

				
			

In this example, when we try to access arguments inside the sum function in strict mode, it throws a TypeError. This is because arguments is not allowed to be accessed directly in strict mode.

Function.caller in Strict Mode:

Similarly, in strict mode, accessing Function.caller directly is not allowed. Let’s see an example:

				
					"use strict";

function innerFunction() {
    console.log(innerFunction.caller); // Throws a TypeError in strict mode
}

function outerFunction() {
    innerFunction();
}

outerFunction();

				
			

In this example, when we try to access arguments inside the sum function in strict mode, it throws a TypeError. This is because arguments is not allowed to be accessed directly in strict mode.

Function.caller in Strict Mode:

Similarly, in strict mode, accessing Function.caller directly is not allowed. Let’s see an example:

Strict mode is a powerful feature in JavaScript that helps improve code quality, catch errors, and enforce best practices. By enabling strict mode in your JavaScript code, you can write cleaner, safer, and more reliable applications.By now, you should have a solid understanding of strict mode in JavaScript, including how to enable it, its restrictions, benefits, and practical use cases. Practice using strict mode in your code to reinforce your understanding and become a more proficient JavaScript developer. Happy coding !❤️

Table of Contents

Contact here

Copyright © 2025 Diginode

Made with ❤️ in India