
- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing
- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM
- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers
- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources
Why do we use "use strict" in JavaScript?
The “use strict” is a directive, which is a literal expression. It was introduced in JavaScript 1.8.5. As the name suggests, “use strict” indicates that the code is to be executed in strict mode.
Benefits of using “use strict”
It’s easier to write "secure" JavaScript codes.
It changes previously accepted "bad syntax" into real errors. As an example, mistyping a variable name creates a new global variable. When using strict mode, this will throw an error. It leads to making it impossible to accidentally create a global variable.
A programmer will not receive any error feedback assigning values to non-writable properties.
But in strict mode, any assignment to a non-writable property, a get-only property, a non-existing property, a non-existing variable, or a non-existing object, will throw an error.
To declare strict mode, add the keyword “use strict” in the beginning. For global scope, declare it at the beginning of the script.
We could declare a strict mode for the whole script, function, or for module.
In the strict mode, the followings are not allowed -
Using an undefined variable or object.
Deleting a variable, object, or function.
Duplication of a parameter name.
Writing to read-only or get-only property.
Deleting an undeletable property.
Using words ‘eval’ and ‘arguments’ as variables.
With statement.
Let’s look at the above cases with the help of examples.
Undefined variable or object
The undefined variables or objects are not allowed in the strict mode.
"use strict"; a = 1; // this will throw an error because a is not defined
Example 1
In the program below, variable “a” is not defined and is in the strict mode.
<!DOCTYPE html> <html> <body> <p>An error would come, since you have used a variable, but forgot to declare it </p> <p>Press F8 to see the error. </p> <script> "use strict"; a = 1; </script> </body> </html>
Output
On successful execution of the above code, it will produce the following result -
An error would come, since you have used a variable, but forgot to declare it Press F8 to see the error.
And we get the following error message in the console-
Deleting a variable, object, or function
In the strict mode, the deletion of a variable, object, or function is not allowed. It will show an error when an attempt is made to delete them.
"use strict"; Let a = 1; delete a; // this will throw an error
Example 2
In the program below, variable “a” is not defined and i
<!DOCTYPE html> <html> <body> <script> "use strict"; let a = 1.02; delete a; </script> </body> </html>
Output
On successful execution of the above code, we get the following error message in the console-
Duplication of a parameter name
In the strict mode, the duplication of a parameter name is not allowed. It will show an error when an attempt is made to use the same name of two or more parameters.
"use strict"; function f(x, x) {}; // this will throw an error
Example
In the program below, the parameters of function f are duplicated while in the strict mode.
<!DOCTYPE html> <html> <body> <script> "use strict"; function f(x, x) {}; </script> </body> </html>
Output
On successful execution of the above code, we get the following error message in the console -
Writing to read-only or get-only property
In the strict mode, writing to a non-writable (read-only) or get-only property is not allowed. It will show an error when an attempt is made to write to a read-only or get-only property.
Example
In the program below, property z is non-writable and we try to assign a value to it, which shows an error.
<!DOCTYPE html> <html> <body> <script> "use strict"; const obj = {}; Object.defineProperty(obj, "z", {writable:false}); obj.z = 2; // This will cause an error </script> </body> </html>
Output
On successful execution of the above code, we get the following error message in the console -
Example − Deleting an undeletable property
In the strict mode, deleting an undeletable property is not allowed. In the program below, we tried to delete property ‘prototype’ of Object.
<!DOCTYPE html> <html> <body> <script> "use strict"; delete Object.prototype; </script> </body> </html>
Output
On successful execution of the above code, we get the following error message in the console -
Example − Using ‘eval’ and ‘arguments’ as variables
In strict mode, using the words ‘eval’ and ‘arguments’ as a variable is not allowed.
In the program below, we tried to use the word ‘eval’ as a variable.
<!DOCTYPE html> <html> <body> <script> "use strict"; let eval = 2.45; </script> </body> </html>
Output
This will produce the following result -
Example − with statement
In strict mode, using with statement is not allowed.
<!DOCTYPE html> <html> <body> <script> "use strict"; with (Math){x = sin(0)}; </script> </body> </html>
Output
This will produce the following result -
- Related Articles
- Why do we Use JavaScript in HTML?
- Why do we use jQuery over JavaScript?
- Why do we use Convex Mirrors ?
- Why do we use random.seed() in Python?
- Why do we use interfaces in Java?
- Why do we use pandas in python?
- Why do we use brackets in BODMAS?
- Why do we use JSON.stringify() method in jQuery?
- Why do we use DOCTYPES in HTML document?
- Why do we use modifiers in C/C++?
- Why do we use restrict qualifier in C++?
- Why do we use const qualifier in C++?
- Why do we use internal keyword in C#?
- Why do we use comma operator in C#?
- Why do we use salt in food preservation?
