DEV Community

Cover image for JavaScript Interview Questions Every Dev Should Know — Part 1: Fundamentals & Data Types
Keyur Gohil
Keyur Gohil

Posted on

JavaScript Interview Questions Every Dev Should Know — Part 1: Fundamentals & Data Types

If you're prepping for a JavaScript interview, the fundamentals are where it all starts. Interviewers love probing this area because it separates people who've memorized syntax from people who actually understand how the language behaves under the hood.

This is Part 1 of an 8-part series covering JavaScript interview questions with detailed explanations. Let's dive in. 🚀

If you're prepping for a JavaScript interview, the fundamentals are where it all starts. Interviewers love probing this area because it separates people who've memorized syntax from people who actually understand how the language behaves under the hood.

This is Part 1 of an 8-part series covering JavaScript interview questions with detailed explanations. Let's dive in. 🚀


Q1. What are the primitive data types in JavaScript?

JavaScript has seven primitive types:

  • string
  • number
  • boolean
  • null
  • undefined
  • symbol
  • bigint

Primitives are immutable and are compared by value, not by reference.

Everything else—objects, arrays, and functions—is a reference type and is compared by reference (memory address).


Q2. What is the difference between null and undefined?

  • undefined means a variable has been declared but not assigned a value, a function has no explicit return, or an object property doesn't exist.
  • null is an intentional assignment representing "no value."
typeof undefined; // "undefined"
typeof null;      // "object" (a long-standing JavaScript bug)
Enter fullscreen mode Exit fullscreen mode

Q3. What is the difference between == and ===?

=== (strict equality) compares both value and type.

== (loose equality) performs type coercion before comparison.

"5" == 5;  // true
"5" === 5; // false
Enter fullscreen mode Exit fullscreen mode

Best practice: Prefer === to avoid unexpected coercion.


Q4. What is NaN, and how do you correctly check for it?

NaN ("Not a Number") represents an invalid numeric result.

A unique property:

NaN !== NaN // true
Enter fullscreen mode Exit fullscreen mode

Correct way to check:

Number.isNaN(NaN);     // true
isNaN("hello");        // true (because of coercion)
Number.isNaN("hello"); // false
Enter fullscreen mode Exit fullscreen mode

Q5. What is type coercion in JavaScript?

Type coercion is JavaScript automatically converting one type into another.

Examples:

"5" - 2; // 3
"5" + 2; // "52"
Enter fullscreen mode Exit fullscreen mode

It can also be explicit:

Number("5");
String(5);
Boolean(1);
Enter fullscreen mode Exit fullscreen mode

Q6. What are truthy and falsy values?

Falsy values are:

false
0
-0
0n
""
null
undefined
NaN
Enter fullscreen mode Exit fullscreen mode

Everything else—including {} and []—is truthy.


Q7. What is the difference between var, let, and const?

Keyword Scope Redeclare Reassign
var Function
let Block
const Block

Notes:

  • var is initialized with undefined.
  • let and const exist in the Temporal Dead Zone until their declaration.
  • const prevents reassignment, not object mutation.

Q8. What is variable hoisting?

Hoisting moves declarations to the top of their scope before execution.

console.log(a); // undefined
var a = 10;
Enter fullscreen mode Exit fullscreen mode

With let and const:

console.log(a); // ReferenceError
let a = 10;
Enter fullscreen mode Exit fullscreen mode

Q9. What is the Temporal Dead Zone (TDZ)?

The TDZ is the time between entering a scope and reaching a let or const declaration.

console.log(x); // ReferenceError

let x = 5;
Enter fullscreen mode Exit fullscreen mode

Although x exists internally, it cannot be accessed until its declaration executes.


Q10. What is the difference between deep copy and shallow copy?

A shallow copy copies only the first level.

Nested objects remain shared.

const shallow = { ...original };
Enter fullscreen mode Exit fullscreen mode

A deep copy duplicates every nested object.

const deep = structuredClone(original);
Enter fullscreen mode Exit fullscreen mode

Final Thoughts

Mastering these JavaScript fundamentals is essential for technical interviews because they reveal how well you understand the language beyond syntax.

In Part 2, we'll cover Functions, Scope & Closures—including some of the most frequently asked JavaScript interview questions.

If this article helped, leave a ❤️ and follow for the rest of the series!

Top comments (0)