Jack Downson

Jack Downson

1576239075

About Semicolons in Javascript

When I first started writing JavaScript I thought that semicolons were mandatory. I was learning about jQuery at the time and all of the documentation I was reading showed a semicolon at the end of every statement.

I had a bit of background in some other programming languages and this was consistent with what I already knew — semicolons are there to help the computer distinguish one instruction from another. Makes sense.

It wasn’t long before I learned about JavaScript’s Automatic Semicolon Insertion (ASI). Basically, JavaScript will put semicolons in for you automatically if you leave them out. So, they aren’t mandatory after all.

The history behind this is interesting. JavaScript didn’t start out as the programming language heavyweight that it is today. In the beginning, it was intended to be something that non-professionals could pick up without too much trouble. ASI was a feature thrown in to make the language more friendly to laymen. At least, that was the idea.

To avoid breaking the internet, JavaScript needs to be backward compatible. We can add new features (ES6, ES7, ES8, etc) but we can’t take features away because they’re already being used and relied on. Whether intentionally or by accident, millions of lines of JavaScript exist that need ASI to work properly. So, we’re all stuck with it, but some of us choose to handle it in different ways.

One camp writes code that includes semicolons. Their code looks a bit more like a language that actually requires semicolons, like C or PHP.

The other camp leaves the semicolons off, relying on ASI to put them in automatically. Their code looks slightly more like Python or Ruby.

The JavaScript community is still split on this. For example, React still includes semicolons in its docs, but Vue does not.

Vue was my next stop in JavaScript frameworks after jQuery and React, and I decided to adopt the no-semicolon coding style featured in the docs. I enjoyed it (it makes your code look so much cleaner!) and began applying that style to other JavaScript endeavors outside of Vue — Node.js, for instance.

Unfortunately, I started running into problems…

How Relying on Automatic Semicolon Insertion Breaks Things: A Concrete Example

I wanted to automate end-to-end testing for a project I was working on. My idea was to program a basic bot that would go to my webpage and put different kinds of input into a form. If the output the bot gets back is what I expected, good. If not, I might have a bug.

Puppeteer (Headless Chrome Node.js API) seemed to be a good way to do this, so I took it for a spin. The docs feature this snippet of code to get you started:

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
  await browser.close();
})();

Essentially, the idea with this code is to import Puppeteer and then implement anasync IIFE (Immediately Invoked Function Expression). This allows you to use the await keyword to wait for asynchronous actions (like launching a browser, for example) to complete before starting on to the next step (loading a webpage, for example).

Testing this out, everything works. Puppeteer goes to the webpage and takes the screenshot as expected. Awesome.

But the rest of the code I had written for this project was done in the sans-semicolon style. So, for consistency, I took the semicolons out:

const puppeteer = require('puppeteer')
(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://example.com')
  await page.screenshot({path: 'example.png'})
await browser.close()
})()

Unfortunately, this change caused my code to throw an error that it wasn’t throwing when the semicolons were included:

/Users/chris/Documents/code/sandbox/nodejs/puppeteer-test/index.js:3
(async () => {
^
TypeError: require(...) is not a function

This was confusing. The code was working fine — and then it wasn’t. But after digging around a bit, it started to make sense.

Node.js doesn’t know that it should stop after const puppeteer = require('puppeteer') —because it doesn’t have a semicolon to go by. Instead, it sees an opening brace coming up below and interprets that to be a function call. It sees the code as something like this:

const puppeteer = require('puppeteer')(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://example.com')
  await page.screenshot({path: 'example.png'})
await browser.close()
})()

Without semicolons, this code is ambiguous.

This is a big problem for the sans-semicolon camp. IIFEs are a common pattern in JavaScript, not an obscure edge case, and our code styling needs to work with them. Avoiding IIFEs just to avoid semicolons would be pretty silly.

Situations like this don’t come up a lot — but they do sometimes and JavaScript developers should be prepared for them.

It’s possible to only insert semicolons when they’re absolutely necessary (for example after the require statement above), but this is awkward for a couple of reasons:

  • You might not always know where semicolons are required beforehand. In fact, when things break, you might not know you are dealing with an ASI problem at all. Including semicolons by default can potentially save you a lot of time spent debugging.
  • It just looks wrong to have semicolons in some places and not in others — My OCD can’t deal with that kind of inconsistency.

Another solution is to abide by different rules depending on your current environment. Go with the flow, so to speak.

For example, you might include semicolons when you are writing vanilla JavaScript, jQuery, and Node.js and leave the semicolons off when you write React and Vue. The inconsistency still bugs me, but I prefer this solution over the one mentioned above.

Finally, we could simply put semicolons everywhere, all the time. As much as I love the look of JavaScript without semicolons, including semicolons by default makes a lot of sense.

Summary

For better or worse, JavaScript was originally designed to include Automatic Semicolon Insertion (ASI) and we are stuck with it.

It has been almost 25 years since the language was invented and the community has still not reached consensus on semicolon best practices. Some devs like to include them, some devs like to leave them off.

Whatever camp you fall into, it’s important to understand that omitting semicolons can bite you from time to time, and you might not expect it. IIFEs, for example, can be a problematic pattern for sans-semicolon users.

In the end, semicolons aren’t exactly mandatory, but they aren’t exactly optional, either.

#javascript #programming

What is GEEK

Buddha Community

About Semicolons in Javascript

Rahul Jangid

1622207074

What is JavaScript - Stackfindover - Blog

Who invented JavaScript, how it works, as we have given information about Programming language in our previous article ( What is PHP ), but today we will talk about what is JavaScript, why JavaScript is used The Answers to all such questions and much other information about JavaScript, you are going to get here today. Hope this information will work for you.

Who invented JavaScript?

JavaScript language was invented by Brendan Eich in 1995. JavaScript is inspired by Java Programming Language. The first name of JavaScript was Mocha which was named by Marc Andreessen, Marc Andreessen is the founder of Netscape and in the same year Mocha was renamed LiveScript, and later in December 1995, it was renamed JavaScript which is still in trend.

What is JavaScript?

JavaScript is a client-side scripting language used with HTML (Hypertext Markup Language). JavaScript is an Interpreted / Oriented language called JS in programming language JavaScript code can be run on any normal web browser. To run the code of JavaScript, we have to enable JavaScript of Web Browser. But some web browsers already have JavaScript enabled.

Today almost all websites are using it as web technology, mind is that there is maximum scope in JavaScript in the coming time, so if you want to become a programmer, then you can be very beneficial to learn JavaScript.

JavaScript Hello World Program

In JavaScript, ‘document.write‘ is used to represent a string on a browser.

<script type="text/javascript">
	document.write("Hello World!");
</script>

How to comment JavaScript code?

  • For single line comment in JavaScript we have to use // (double slashes)
  • For multiple line comments we have to use / * – – * /
<script type="text/javascript">

//single line comment

/* document.write("Hello"); */

</script>

Advantages and Disadvantages of JavaScript

#javascript #javascript code #javascript hello world #what is javascript #who invented javascript

Hire Dedicated JavaScript Developers -Hire JavaScript Developers

It is said that a digital resource a business has must be interactive in nature, so the website or the business app should be interactive. How do you make the app interactive? With the use of JavaScript.

Does your business need an interactive website or app?

Hire Dedicated JavaScript Developer from WebClues Infotech as the developer we offer is highly skilled and expert in what they do. Our developers are collaborative in nature and work with complete transparency with the customers.

The technology used to develop the overall app by the developers from WebClues Infotech is at par with the latest available technology.

Get your business app with JavaScript

For more inquiry click here https://bit.ly/31eZyDZ

Book Free Interview: https://bit.ly/3dDShFg

#hire dedicated javascript developers #hire javascript developers #top javascript developers for hire #hire javascript developer #hire a freelancer for javascript developer #hire the best javascript developers

Niraj Kafle

1589255577

The essential JavaScript concepts that you should understand

As a JavaScript developer of any level, you need to understand its foundational concepts and some of the new ideas that help us developing code. In this article, we are going to review 16 basic concepts. So without further ado, let’s get to it.

#javascript-interview #javascript-development #javascript-fundamental #javascript #javascript-tips

Ajay Kapoor

1626321063

JS Development Company India | JavaScript Development Services

PixelCrayons: Our JavaScript web development service offers you a feature-packed & dynamic web application that effectively caters to your business challenges and provide you the best RoI. Our JavaScript web development company works on all major frameworks & libraries like Angular, React, Nodejs, Vue.js, to name a few.

With 15+ years of domain expertise, we have successfully delivered 13800+ projects and have successfully garnered 6800+ happy customers with 97%+ client retention rate.

Looking for professional JavaScript web app development services? We provide custom JavaScript development services applying latest version frameworks and libraries to propel businesses to the next level. Our well-defined and manageable JS development processes are balanced between cost, time and quality along with clear communication.

Our JavaScript development companies offers you strict NDA, 100% money back guarantee and agile/DevOps approach.

#javascript development company #javascript development services #javascript web development #javascript development #javascript web development services #javascript web development company

Santosh J

1622036598

JavaScript compound assignment operators

JavaScript is unarguablly one of the most common things you’ll learn when you start programming for the web. Here’s a small post on JavaScript compound assignment operators and how we use them.

The compound assignment operators consist of a binary operator and the simple assignment operator.

The binary operators, work with two operands. For example a+b where + is the operator and the a, b are operands. Simple assignment operator is used to assign values to a variable(s).

It’s quite common to modify values stored in variables. To make this process a little quicker, we use compound assignment operators.

They are:

  • +=
  • -+
  • *=
  • /=

You can also check my video tutorial compound assignment operators.

Let’s consider an example. Suppose price = 5 and we want to add ten more to it.

var price = 5;
price = price + 10;

We added ten to price. Look at the repetitive price variable. We could easily use a compound += to reduce this. We do this instead.

price += 5;

Awesome. Isn’t it? What’s the value of price now? Practice and comment below. If you don’t know how to practice check these lessons.

Lets bring down the price by 5 again and display it.
We use console.log command to display what is stored in the variable. It is very help for debugging.
Debugging let’s you find errors or bugs in your code. More on this later.

price -= 5;
console.log(price);

Lets multiply price and show it.

price *=5;
console.log(price);

and finally we will divide it.

price /=5;
console.log(price);

If you have any doubts, comment below.

#javascript #javascript compound assignment operators #javascript binary operators #javascript simple assignment operator #doers javascript