JavaScript concepts and features that are particularly important for React development

Sachin Tharaka
3 min readJun 27, 2024

--

1. ES6+ Syntax and Features

  • Arrow Functions: Provide a shorter syntax for functions and lexically bind the this keyword.
const add = (a, b) => a + b;
  • Template Literals: Allow embedding expressions within strings using backticks.
const name = "John";
const greeting = `Hello, ${name}!`;
  • Destructuring: Extract values from arrays or properties from objects into distinct variables.
const person = { name: "Jane", age: 25 };
const { name, age } = person;
  • Spread and Rest Operators: Spread (...) expands arrays or objects, while rest collects arguments into an array.
const arr = [1, 2, 3];
const newArr = [...arr, 4, 5]; // [1, 2, 3, 4, 5]

function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
  • Default Parameters: Allow parameters to have default values if not provided.
function greet(name = "Guest") {
return `Hello, ${name}`;
}
  • Classes: Syntactic sugar over JavaScript’s existing prototype
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}

2. Modules and Imports

  • Use import and export to share code between files.
// exporting a function
export const add = (a, b) => a + b;

// importing a function
import { add } from './math';

3. Async Programming

  • Promises: Handle asynchronous operations.
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
  • Async/Await: Simplifies working with promises.
async function fetchData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}

4. Array Methods

  • Map: Create a new array by applying a function to each element.
const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2); // [2, 4, 6]
  • Filter: Create a new array with elements that pass a test.
const numbers = [1, 2, 3, 4];
const even = numbers.filter(num => num % 2 === 0); // [2, 4]
  • Reduce: Apply a function against an accumulator and each element to reduce it to a single value.
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((total, num) => total + num, 0); // 10
  • Find: Return the first element that passes a test.
const numbers = [1, 2, 3, 4];
const found = numbers.find(num => num > 2); // 3

5. Object Manipulation

  • Object.keys / Object.values / Object.entries: Work with object properties and values.
const obj = { a: 1, b: 2, c: 3 };
const keys = Object.keys(obj); // ['a', 'b', 'c']
const values = Object.values(obj); // [1, 2, 3]
const entries = Object.entries(obj); // [['a', 1], ['b', 2], ['c', 3]]

6. Closures

  • Functions that retain access to their lexical scope.
function outer() {
let count = 0;
return function inner() {
count++;
return count;
}
}
const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

7. Context and this Keyword

  • Understand how this works in different contexts, especially with classes and functions.
const obj = {
name: "John",
greet() {
console.log(`Hello, ${this.name}`);
}
};
obj.greet(); // Hello, John

8. Events and DOM Manipulation

  • Although React abstracts away much of direct DOM manipulation, understanding the basics is still helpful.
document.getElementById('myButton').addEventListener('click', () => {
console.log('Button clicked');
});

9. Error Handling

  • Use try/catch for synchronous code and proper error handling in promises and async functions.
try {
throw new Error("Something went wrong");
} catch (error) {
console.error(error.message);
}

async function fetchData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}

10. Understanding Prototypes and Inheritance

  • JavaScript’s inheritance model and how objects are linked via prototypes.
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
return `Hello, ${this.name}`;
};
const john = new Person("John");
console.log(john.greet()); // Hello, John

Additional Resources:

  • MDN Web Docs: Comprehensive resource for JavaScript documentation.
  • JavaScript.info: Detailed tutorials on modern JavaScript.
  • Eloquent JavaScript: A book that covers JavaScript fundamentals and advanced topics.

By mastering these JavaScript concepts, you’ll be well-equipped to tackle any React development challenges.

--

--

Sachin Tharaka

Software Engineering, University of Kelaniya, Sri Lanka