Arwa Lokhandwala, Author at General Assembly Blog

Top Five JavaScript Interview Questions

By

JavaScript is one of the most popular programming languages. Even though there are many JavaScript-based frameworks like React.js and Node.js, the ability to answer some core JavaScript questions will always give you an upper hand during an interview.

So, let’s start!

1. What is hoisting?

Hoisting is a default process wherein JavaScript moves all the declarations to the top of the current scope.

Example:

a=20;
console.log(a) // 20
var a;

Even though variable a is initialized and accessed before it’s declared, JavaScript doesn’t throw an error.

2. What is the purpose of closures?

As per MDN Web Docs,

“Closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment).” 

In simple terms, Closure is what allows an inner function to access an outer function’s scope, even when the outer function has already returned.

Example:

const cartMode = function() {
    let items=[] // acts like a private variable
    function addItem(item) {
       items.push(item)
       return "Item added to Cart"
    }

    function totalItems() {
      return items.length
    }

    return {
       addItem,
       totalItems
    }

}

const cart=cartMode()
cart.addItem("Bag") // returns Item added to Cart
console.log(cart.items) // returns undefined
cart.totatItems() // returns 1

In the above example, the items variable is accessible to all the inner functions, but it’s not directly accessible from outside. This happens because of closures

3. What is the difference between let, const, var?

Before ES6, JS had no way to support block-level scope variables. Now, we have:

  • var for creating function-level scope variables.
  • let for creating dynamic block-level scope variables.
  • const for creating constant block-level scope variables.

Example:

var a = 20

if(a > 10) {
  let b = 1
  const a = 2

  console.log(b,a, 'Inner Scope')   // 1 2 Inner Scope
}

console.log(a, 'Outer Scope')   // 20 Outer Scope

4. What is the output of the following code?

console.log("1")
setTimeout(function(){
  console.log("2")
},0)
console.log("3")

Output:

"1"
"3"
"2"

Even though we specified the delay as 0ms, it still prints “2” after “3”. This is because of the Event Loop in JavaScript. 

In this case, first, console.log(“1”) is executed, then setTimeout() is executed; after the specified delay (in this case, 0ms), the callback function is added to Message Queue. Now the main thread only picks up items from the message queue once the current execution is done. So, the main thread first evaluates the console.log(“3”) statement post. Then, it picks up the callback() from the Queue and executes the console.log(“2”) statement. Hence, the above output.

5. Difference between arrow functions and regular functions?

Arrow functions are new ES6 syntax for defining functions. It looks like this:

const add = (a,b) => a+b
add(2,3) // 5 

The main difference between the arrow function and regular function is the value of this  keyword.

In case of arrow functions, the this keyword is assigned a value lexically. What this means is unlike regular functions, arrow functions never create their own execution context. They, by default, take the execution context of the enclosing function a.k.a., parent. 

Here is another great article explaining this in-depth. 

Conclusion

Preparing for JavaScript Interviews can feel overwhelming, but the only way to overcome them is to take one concept at a time

Explore Coding Workshops

How to Easily Run JavaScript in Terminal

By

TL;DR

You can run JavaScript in terminal or any command-line interface using Node.js, an open-source, platform-agnostic runtime that executes JavaScript outside a browser.

Before we take a deep dive into how to run JavaScript in your terminal, we need to understand few basic terminologies like:

  1. Client-Side JavaScript 
  2. Server-Side JavaScript
  3. Command Line Interface

Client-Side JavaScript

  • JavaScript code executed in the browser is known as client-side JavaScript. 
  • Client-side JS was originally used to add some interactivity on websites; for example, the Click on Submit button in a form sends form details to the server.
  • The <script> tag within your HTML page is used to write client-side JavScript, which is later executed by the browser.
<script>
  console.log("Client-side JavaScript");
</script>

Server-Side JavaScript

  • When you run JavaScript code outside the browser-like on a web server, it becomes server-side JavaScript.
  • Server-side JS is generally used to write the back-end logic of your application; for instance, you can check to see if a user password matches the stored DB password.
  • You can run Server-side JavaScript using any command-line interface.

But, what is Command Line Interface, a.k.a.,Terminal?

  • CLI is a text-based interface that allows users to perform some operation in a computer by typing commands.
  • The most common CLI for popular OS’s are:
    • Windows: Command Prompt, PowerShell
    • Mac: Terminal, iTerm

Let’s see how to run JavaScript in these popular CLI’s:

Running JavaScript in Terminal 

Executing JavaScript in Terminal has two steps:

  1. Installing Node.js.
  2. Accessing Node.js in Terminal/Command Prompt.
  3. Running your file using node.

Installing Node.js

  1. Go to https://nodejs.org/en/download/; you should see a page like below:
  1. If you are using Windows OS, click on Windows Installer or else click on Mac Installer for macOS.
  2. Once downloaded, double-click on the installer to install Node.js.

Checking Node.js in Your Terminal/Command Prompt

To open your terminal in macOS:

  1. Open the Spotlight Search Bar (Cmd+Space bar).
  2. Type Terminal: it has an icon like below — open it.
  3. Once opened, type the following command:
node -v

If you see an output like this, v14.15.3 Node.js is installed successfully.

Writing Your JS Code

  1. Create a new file called index.js in your Desktop/folder
  2. Let’s write some code!
const greet = (name=”Everyone”) => {    console.log(`Hello ${name}`);}
greet();

Now, let’s run it!

Running JavaScript in Your Terminal/Command Prompt

  1. Go to “Desktop path” within your Terminal/Command-Prompt:
cd /Users/arwalokhandwala/Desktop/
  1. To run your file using Node.js, type:
node index.js
  1. If you see an output like below, then Congratulations! You are successfully running your JavaScript in your Terminal/Command-Prompt:
Hello Everyone

Passing Runtime Arguments in Node.js

Like in the browser, we use forms to pass custom values to our JavaScript. If you wish to pass runtime values, then you can use process.argv[2]

const greet = (name = "Everyone") => {
   console.log(`Hello ${name}`);
}
greet(process.argv[2]);

In your Terminal/Command-prompt, type:

node index.js ArwaHello Arwa

Conclusion

Node.js makes it very simple to run JavaScript code in your Terminal/Command-prompt and opens a door of opportunities for a web developer.

Explore Coding Workshops