JavaScript Basics for React Interview

JavaScript is one of the most powerful and widely-used programming languages for web development. From variables and functions to asynchronous events and event listeners, mastering these concepts will take you a step closer to becoming an expert. In this blog, we will dive into essential JavaScript topics with simple explanations and examples.


1. Basics of JavaScript Variables

What are var, let, and const?

  • var: Used in older versions of JavaScript (ES5). It has function scope and is hoisted.
  • let: Introduced in ES6. It has block scope and avoids var‘s issues.
  • const: Also introduced in ES6. Used for variables whose values should not change.

Example:

var a = 10; // Function-scoped
let b = 20; // Block-scoped
const c = 30; // Immutable

What is Hoisting?

Hoisting is a behavior in JavaScript where variable declarations are moved to the top of their scope during execution.

  • Variables declared with var are hoisted but initialized as undefined.
  • let and const are hoisted but not initialized.

Example:

console.log(x); // undefined
var x = 5;

console.log(y); // ReferenceError
let y = 10;

2. Functions in JavaScript

What are Arrow Functions?

Arrow functions provide a more concise syntax compared to regular functions. They don’t bind their own this value.

Example:

const add = (a, b) => a + b;
console.log(add(2, 3)); // Output: 5

What is a Higher-Order Function (HOC)?

Higher-Order Functions are functions that either:

  1. Take another function as an argument, or
  2. Return a function as output.

Example:

function greet(callback) {
  console.log("Hello");
  callback();
}
greet(() => console.log("World!"));

3. Arrays and Objects in JavaScript

What is Array and Object Destructuring?

Destructuring allows you to extract values from arrays or objects in a cleaner way.

Array Destructuring:

const numbers = [1, 2, 3];
const [first, second] = numbers;
console.log(first, second); // Output: 1 2

Object Destructuring:

const person = { name: "John", age: 25 };
const { name, age } = person;
console.log(name, age); // Output: John 25

What is the Rest Operator (...)?

It collects the remaining elements into an array.

Example:

const [a, ...rest] = [1, 2, 3, 4];
console.log(rest); // Output: [2, 3, 4]

What is the Spread Operator?

The spread operator expands elements into individual components.

Example:

const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
console.log(arr2); // Output: [1, 2, 3, 4]

4. Conditions in JavaScript

If-Else and Ternary Operator

  • if-else: Traditional conditional statements.
  • Ternary Operator: A compact version of if-else.

Example:

const age = 18;
const message = age >= 18 ? "Adult" : "Minor";
console.log(message); // Output: Adult

Using && and ||

  • &&: Executes if both conditions are true.
  • ||: Executes if at least one condition is true.

Example:

const loggedIn = true;
console.log(loggedIn && "Welcome!"); // Output: Welcome!

const username = null;
console.log(username || "Guest"); // Output: Guest

What is Optional Chaining?

Optional chaining (?.) prevents errors when accessing properties that might not exist.

Example:

const user = {};
console.log(user.address?.city); // Output: undefined (no error)

5. Array Methods

Common Methods: map, filter, reduce, and sort

  • map: Transforms each element of an array.
  • filter: Returns elements that meet a condition.
  • reduce: Reduces an array to a single value.
  • sort: Sorts the elements of an array.

Example:

const numbers = [1, 2, 3, 4];

const doubled = numbers.map(n => n * 2);
console.log(doubled); // Output: [2, 4, 6, 8]

const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // Output: [2, 4]

const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // Output: 10

const sorted = numbers.sort((a, b) => b - a);
console.log(sorted); // Output: [4, 3, 2, 1]

6. Event Listeners

What are Event Listeners?

Event listeners listen for specific user actions (like clicks or input).

Example:

document.querySelector("button").addEventListener("click", () => {
  console.log("Button Clicked!");
});

setTimeout and setInterval

  • setTimeout: Runs a function once after a delay.
  • setInterval: Repeats a function at regular intervals.

Example:

setTimeout(() => console.log("Hello after 2 seconds"), 2000);

setInterval(() => console.log("Repeating every 1 second"), 1000);

Event Bubbling and Capturing

  • Bubbling: Events propagate from the target element up to its parents.
  • Capturing: Events propagate from the root to the target.

Example:

document.querySelector("div").addEventListener("click", () => {
  console.log("Div clicked!");
});

7. Asynchronous Events

Callbacks and Callback Hell

Callbacks handle asynchronous code, but nesting them can lead to “callback hell.”

Example:

function fetchData(callback) {
  setTimeout(() => {
    callback("Data fetched!");
  }, 1000);
}
fetchData(console.log);

Promises and async/await

Promises provide a cleaner way to manage async code. async/await simplifies it further.

Example:

const fetchData = () => new Promise(resolve => setTimeout(() => resolve("Data"), 1000));

async function getData() {
  const result = await fetchData();
  console.log(result);
}
getData();

8. The this Keyword

The this keyword refers to the object that owns the function being executed. Its value depends on how the function is called.

Example:

const person = {
  name: "Alice",
  greet() {
    console.log(`Hello, ${this.name}`);
  }
};
person.greet(); // Output: Hello, Alice

In arrow functions, this does not refer to the calling object but inherits from its parent scope.


Conclusion

Understanding these fundamental JavaScript concepts is crucial for writing clean, efficient, and error-free code. Whether you are a beginner or a seasoned developer, mastering variables, functions, array methods, events, and asynchronous programming will boost your productivity and make you a better JavaScript developer.

Keep practicing, and happy coding! 🚀

Scroll to Top