Home Web Front-end Front-end Q&A Should JavaScript add a semicolon?

Should JavaScript add a semicolon?

Sep 29, 2022 pm 05:25 PM
javascript

The semicolon in JavaScript is optional. Whether to add a semicolon or not is mainly a matter of coding style, but don’t add it for a while and not add it for a while. Usually, if a statement begins with "(", "[", "/", " ", or "-", it may be interpreted as part of the previous line of statements; in this case, you can defensively add a semicolon at the beginning of the line .

Should JavaScript add a semicolon?

The operating environment of this tutorial: windows7 system, javascript version 1.8.5, Dell G3 computer.

The semicolon in JavaScript is optional Yes, adding semicolons or not is mainly a matter of coding style. One style is to use semicolons to clearly end statements, even if these semicolons are not necessary; the other style is to avoid adding semicolons as much as possible, only when necessary. Only add it.

Should JavaScript add a semicolon?

Note: You can add semicolon or not add it, but don’t add it for a while and then not add it for a while.

The role of the semicolon in the code

The main function of the semicolon is: as an assertion of a statement (EOS), it is used to end a program statement in order to allow parsing The compiler parses the program correctly. In many C-Style languages, using a semicolon to explicitly end a line of statements is mainly to reduce the cost of language compiler development. But modern compilers are smart enough and can handle multi-line statements well. Many languages ​​do not need to explicitly use a semicolon at the end, such as: Go, Scala, Ruby, Python, Swift, Groovy, etc.

Although JavaScript is a C-like language, it is different from C and Java , semicolons are also optional in JavaScript, and it uses Auto Semicolon Insertion (ASI).

JavaScript automatic semicolon insertion mechanism

JavaScript has a mechanism for automatic semicolon insertion (Automatic Semicolon Insertion), referred to as ASI. There is a clear description of Automatic Semicolon Insertion in ECMA-262 - Automatic Semicolon Insertion:

  • The program is parsed from left to right. When encountering a token (offending token) that does not conform to any grammatical production, a semicolon will be automatically inserted in front of the offending token as long as one of the following conditions is met.

At least one newline character (LineTerminator) separates the offending token from the previous token.

The offending token is }.

  • From the left By the right parser, the tokens input stream has ended. When the parser cannot parse the input token stream into a single complete ECMAScript program, a semicolon is automatically inserted at the end of the input stream.

  • Parse the program from left to right and encounter a token that is allowed by some grammar productions, but it is a restricted operation (Restricted Productions). When at least one newline character separates the object restricted token and the previous token, then a semicolon is automatically inserted in front of the restricted token.

    However, the above rule has an additional precedence condition: if the semicolon is inserted and the parsed result is an empty statement, or if the semicolon is inserted and it becomes one of the two semicolons at the head of a for statement, then no A semicolon is automatically inserted.

Note: The translation of the above instructions is awkward. You can read it several times or read the original English text ECMA-262 - Automatic Semicolon Insertion

Semicolon automatic Insertion situation

To briefly summarize, automatic semicolon insertion is based on line replacement. The parser will try to merge the new line into the current line if and only if it meets the ASI rules. Treat new lines as independent statements

The main automatic insertion rules are as follows:

  • When a new line is merged into the current line, it will constitute an illegal statement When it cannot be parsed correctly, a semicolon

  • will be automatically inserted when a new line begins with }, which is the end of the code block, a semicolon ## will be automatically inserted.

  • #When ending with a

    return statement, a semicolon is automatically inserted at the end of the line

  • When ending with a

    break When the statement ends, a semicolon is automatically inserted at the end of the line

  • When the statement ends with

    throw, a semicolon is automatically inserted at the end of the line

  • When ending with the

    continue statement, a semicolon is automatically inserted at the end of the line

  • When ending with the ES6 yield statement, a semicolon is automatically inserted at the end of the line

  • , -- The suffix expression is used as the beginning of a new line, and a semicolon is automatically inserted at the beginning of the line

  • The automatic insertion number at the end of the source code file

As shown above, if there is no semicolon, an error will be reported when running this code.

Case in which the semicolon cannot be omitted

Normally, if the statement starts with

(,[ , /, , - may be interpreted as part of the previous line of statements. In practice, /, # Statements starting with ##, - are rare. However, statements starting with (, [ are very common, and I can usually defend them at the beginning of the line. Add a semicolon if necessary.<p> Earlier, we learned about the automatic insertion of semicolons, now let’s look at some examples </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let hey = &amp;#39;hey&amp;#39; [&amp;#39;liu&amp;#39;,&amp;#39;liuxing&amp;#39;].forEach(console.log)</pre><div class="contentsignin">Copy after login</div></div><p> Think about the result above for a second? Running this code will throw </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>Uncaught TypeError: Cannot read property &amp;#39;forEach&amp;#39; of undefined</pre><div class="contentsignin">Copy after login</div></div><p>Based on rule 1. The above code will be parsed into the following code</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let hey = &amp;#39;hey&amp;#39;[&amp;#39;liu&amp;#39;,&amp;#39;liuxing&amp;#39;].forEach(console.log)</pre><div class="contentsignin">Copy after login</div></div><p>It can be seen that using the statement starting with <code>[, the preceding Without a semicolon, an error may occur.

Let’s look at an example code of a statement starting with (

const a = 1
const b = 2
const c = a + b
(a + b).toString()
Copy after login

Do you think the result of the above code is "3"? But in fact it will throw an error b is not a function, because according to ASI rules, it will be parsed into the following code:

const a = 1;const b = 2;const c = a + b(a + b).toString()
Copy after login

We will not introduce them one by one/, , - is used as the beginning of a statement. This situation is relatively rare. You can try it yourself. Just remember that the statement starts with (, [ , /, , - at the beginning, you need to add a semicolon before the statement!

Let’s take a look at using return In this case,

(() => {
  return
  {
    name: &#39;Liu Xing&#39;
  }
})()
Copy after login

is your expected value to return an object with name, but it returns undefined. This is ASI automatically in A semicolon is added to return. Here you need to have correct line breaks to ensure that the code runs correctly. We can see that in addition to correct semicolons, we also need correct and reasonable line breaks to make the code structure clearer.

Summary

We understand JavaScript’s automatic semicolon insertion mechanism and when JavaScript will automatically add semicolons. In (, [, /, , - requires us to add a semicolon accurately at the beginning. Automatic Semicolon Insertion The mechanism provides us with two options, to add a semicolon or not? It all depends on the preference of you or your team. Now we also have prettier, Eslint and other tools to automatically unify the style.

[Related recommendations: javascript video tutorialBasic programming video

The above is the detailed content of Should JavaScript add a semicolon?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement an online speech recognition system using WebSocket and JavaScript How to implement an online speech recognition system using WebSocket and JavaScript Dec 17, 2023 pm 02:54 PM

How to use WebSocket and JavaScript to implement an online speech recognition system Introduction: With the continuous development of technology, speech recognition technology has become an important part of the field of artificial intelligence. The online speech recognition system based on WebSocket and JavaScript has the characteristics of low latency, real-time and cross-platform, and has become a widely used solution. This article will introduce how to use WebSocket and JavaScript to implement an online speech recognition system.

WebSocket and JavaScript: key technologies for implementing real-time monitoring systems WebSocket and JavaScript: key technologies for implementing real-time monitoring systems Dec 17, 2023 pm 05:30 PM

WebSocket and JavaScript: Key technologies for realizing real-time monitoring systems Introduction: With the rapid development of Internet technology, real-time monitoring systems have been widely used in various fields. One of the key technologies to achieve real-time monitoring is the combination of WebSocket and JavaScript. This article will introduce the application of WebSocket and JavaScript in real-time monitoring systems, give code examples, and explain their implementation principles in detail. 1. WebSocket technology

How to use JavaScript and WebSocket to implement a real-time online ordering system How to use JavaScript and WebSocket to implement a real-time online ordering system Dec 17, 2023 pm 12:09 PM

Introduction to how to use JavaScript and WebSocket to implement a real-time online ordering system: With the popularity of the Internet and the advancement of technology, more and more restaurants have begun to provide online ordering services. In order to implement a real-time online ordering system, we can use JavaScript and WebSocket technology. WebSocket is a full-duplex communication protocol based on the TCP protocol, which can realize real-time two-way communication between the client and the server. In the real-time online ordering system, when the user selects dishes and places an order

How to implement an online reservation system using WebSocket and JavaScript How to implement an online reservation system using WebSocket and JavaScript Dec 17, 2023 am 09:39 AM

How to use WebSocket and JavaScript to implement an online reservation system. In today's digital era, more and more businesses and services need to provide online reservation functions. It is crucial to implement an efficient and real-time online reservation system. This article will introduce how to use WebSocket and JavaScript to implement an online reservation system, and provide specific code examples. 1. What is WebSocket? WebSocket is a full-duplex method on a single TCP connection.

JavaScript and WebSocket: Building an efficient real-time weather forecasting system JavaScript and WebSocket: Building an efficient real-time weather forecasting system Dec 17, 2023 pm 05:13 PM

JavaScript and WebSocket: Building an efficient real-time weather forecast system Introduction: Today, the accuracy of weather forecasts is of great significance to daily life and decision-making. As technology develops, we can provide more accurate and reliable weather forecasts by obtaining weather data in real time. In this article, we will learn how to use JavaScript and WebSocket technology to build an efficient real-time weather forecast system. This article will demonstrate the implementation process through specific code examples. We

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

How to use insertBefore in javascript How to use insertBefore in javascript Nov 24, 2023 am 11:56 AM

Usage: In JavaScript, the insertBefore() method is used to insert a new node in the DOM tree. This method requires two parameters: the new node to be inserted and the reference node (that is, the node where the new node will be inserted).

JavaScript and WebSocket: Building an efficient real-time image processing system JavaScript and WebSocket: Building an efficient real-time image processing system Dec 17, 2023 am 08:41 AM

JavaScript is a programming language widely used in web development, while WebSocket is a network protocol used for real-time communication. Combining the powerful functions of the two, we can create an efficient real-time image processing system. This article will introduce how to implement this system using JavaScript and WebSocket, and provide specific code examples. First, we need to clarify the requirements and goals of the real-time image processing system. Suppose we have a camera device that can collect real-time image data

See all articles