Top JavaScript Interview Questions and How to Answer Them Effectively

Frequently Asked Questions in Interviews and How to Answer Them

1. Is JavaScript a synchronous or asynchronous language?

Answer: JavaScript is single-threaded, meaning it executes code line by line in a synchronous manner by default. However, it has asynchronous capabilities through mechanisms like callbacks, Promises, and async/await. This makes it non-blocking, allowing certain tasks (like network requests) to run in the background without halting the main thread.

Examples:

  1. Synchronous Execution:

  2.   console.log("Step 1"); 
      console.log("Step 2"); 
      console.log("Step 3"); // Output: Step 1, Step 2, Step 3 (in order)
    
  3. Asynchronous Execution:

     console.log("Start");
     setTimeout(() => console.log("Asynchronous Task"), 1000);
     console.log("End");
     // Output: Start, End, Asynchronous Task (asynchronous is delayed)
    
  4. Using Promises:

     console.log("Start");
     fetch("https://jsonplaceholder.typicode.com/posts/1")
       .then(response => response.json())
       .then(data => console.log(data));
     console.log("End");
     // Output: Start, End, then the fetched data (asynchronously)
    
  5. using set timeout method :

console.log("Start");

setTimeout(() => {
  console.log("Async Operation");
}, 1000);

console.log("End");

Explanation:
Output:

Start
End
Async Operation

The setTimeout function executes after the main thread completes, demonstrating asynchronous behavior.


2. Difference between JavaScript and Type Script

Answer:

FeatureJavaScriptType Script
DefinitionA scripting language for web pages.A super-set of JavaScript with static typing.
TypingDynamically typed.Statically typed (with types like number, string).
CompilationInterpreted in the browser.Compiles to JavaScript.
Error CheckingRuntime errors.Compile-time errors.
FeaturesNo extra featuresIncludes types, interfaces, etc.
Learning CurveEasierRequires understanding of types

Examples:

  1. JavaScript Code:

     let x = "Hello";
     x = 42; // No error (dynamic typing)
    
  2. TypeScript Code:

     let x : string = "Hello";
     x = 42; // Error: Type 'number' is not assignable to type 'string'.
    
  3. Static Typing in TypeScript:

     function add(a: number, b: number): number {
       return a + b;
     }
     console.log(add(5, 10)); // Valid
     console.log(add(5, "10")); // Error
    

3. Difference between var, let, and const

Explanation:

Featurevarletconst
ScopeFunction-scoped.Block-scoped.Block-scoped.
Re-declarationAllowed.Not allowed.Not allowed.
Re-assignmentAllowed.Allowed.Not allowed.
HoistingHoisted with undefined.Hoisted without initialization.Hoisted without initialization.

Examples:

  1. var Scope:

     if (true) {
       var x = 10;
     }
     console.log(x); // 10 (accessible outside the block)
    
  2. let Scope:

     if (true) {
       let y = 20;
     }
     console.log(y); // Error: y is not defined
    
  3. const Reassignment:

     const z = 30;
     z = 40; // Error: Assignment to constant variable
    

4. What is Hoisting?

Answer: Hoisting is JavaScript's behavior of moving variable and function declarations to the top of their scope before execution. var declarations are hoisted with an undefined value, while let and const are hoisted but remain uninitialized.

Examples:

  1. Hoisting with var:

     console.log(a); // undefined
     var a = 10;
    
  2. Hoisting with let and const:

     console.log(b); // Error: Cannot access 'b' before initialization
     let b = 20;
    
  3. Function Hoisting:

     greet(); // Hello
     function greet() {
       console.log("Hello");
     }
    
  4. Example:

console.log(a); // Output: undefined
var a = 10;

console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;

Explanation:
var is hoisted with undefined, but let and const are in the temporal dead zone.


5. What are the data types in JavaScript?

Explanation: JavaScript has 7 primitive data types and 1 non-primitive type:

  1. Primitive: string, number, boolean, null, undefined, symbol, bigint

  2. Non-Primitive: object

Examples:

  1. Primitive Types:

     let str = "Hello"; // string
     let num = 42; // number
     let isActive = true; // boolean
     let nothing = null; // null
     let notDefined; // undefined
    
  2. BigInt:

     let bigNumber = 123456789012345678901234567890n;
    
  3. Objects:

     let obj = { name: "John", age: 30 };
    

6. What are the different types of operators in JavaScript?

Explanation:

  1. Arithmetic: +, -, *, /, %, **

  2. Comparison: ==, ===, !=, !==, <, >, <=, >=

  3. Logical: &&, ||, !

  4. Assignment: =, +=, -=

  5. Bitwise: &, |, ~, ^, <<, >>

Examples:

  1. Arithmetic:

     let sum = 10 + 5; // 15
     let power = 2 ** 3; // 8
    
  2. Comparison:

     console.log(10 == "10"); // true
     console.log(10 === "10"); // false
    
  3. Logical:

     console.log(true && false); // false
    

7. Difference between == and ===

Explanation:

  • ==: Loose equality, compares values after type conversion (compares values only)

  • ===: Strict equality, compares values without type conversion (compares values along with data type)

Examples:

  1. ==:

     console.log(10 == "10"); // true
    
  2. ===:

     console.log(10 === "10"); // false
    

8. Difference between null and undefined

Explanation:

  • null: Explicit absence of value.

  • undefined: Uninitialized variable.

Examples:

  1. Null:

     let a = null;
     console.log(a); // null
    
  2. Undefined:

     let b;
     console.log(b); // undefined
    

9. What is NaN in JavaScript?

Explanation:

  • NaN (Not-a-Number) is a value that represents an invalid number.

Examples:

  1. Arithmetic Error:

     console.log(0 / 0); // NaN
    
  2. Invalid Parsing:

     console.log(Number("abc")); // NaN
    

10. Explain local and global scope in JavaScript

Explanation:

  • Local Scope: Variables declared inside functions.

  • Global Scope: Variables declared outside functions, accessible globally.

Examples:

  1. Global Scope:

     let a = 10;
     function test() {
       console.log(a);
     }
     test(); // 10
    
  2. Local Scope:

     function test() {
       let b = 20;
       console.log(b);
     }
     test();
     console.log(b); // Error: b is not defined
    

Did you find this article valuable?

Support CodeWords by becoming a sponsor. Any amount is appreciated!