20 JavaScript Tips and Tricks You Can Use Right Now

Satyam Verma
4 min readAug 11, 2023

--

Photo by Gabriel Heinzer on Unsplash

JavaScript, the language that makes websites interactive, has some amazing tricks up its sleeve that can make your coding journey smoother and more enjoyable. In this post, we'll explore 20 JavaScript tips and tricks, each explained with easy-to-understand examples. Let's dive in and level up your JavaScript skills!

1. Destructuring Magic: Extract Values with Ease

Destructuring allows you to unpack values from arrays or objects in a breeze. Here's an example:

const person = { name: 'Alice’, age: 30 };
const { name, age } = person;
console.log(name); // Output: Alice
console.log(age); // Output: 30

2. Spread the Love: Clone Arrays and Merge Objects

The spread operator (`...`) lets you create copies of arrays and merge objects effortlessly:

const originalArray = [1, 2, 3];
const clonedArray = [...originalArray];
console.log(clonedArray); // Output: [1, 2, 3]

Merging objects:

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const merged = { ...obj1, ...obj2 };
console.log(merged); // Output: { a: 1, b: 3, c: 4 }

3. The Power of `map()`: Transform with Ease

The `map()` method is your secret weapon for transforming data:

const numbers = [1, 2, 3];
const squared = numbers.map(num => num * num);
console.log(squared); // Output: [1, 4, 9]

4. Short-circuit with `&&` and `||`: Elegant Conditionals

Use `&&` and `||` to create clean and concise conditionals:

const name = user.name || 'Guest';
console.log(name); // Output: Guest

5. Chaining `setTimeout()`: Sequencing Delays

Chaining `setTimeout()` creates a sequence of delayed actions:

function delayedLog(message, time) {
setTimeout(() => {
console.log(message);
}, time);
}
delayedLog('Hello', 1000); // Output (after 1 second): Hello

6. Arrow Functions: Concise and Powerful

Arrow functions (`() => {}`) are not only concise, but they also preserve the value of `this`:

const greet = name => `Hello, ${name}!`;
console.log(greet(’Alice’)); // Output: Hello, Alice!

7. Mastering `Promise.all()`: Handle Multiple Promises

Combine multiple promises and handle them collectively using `Promise.all()`:

const promise1 = fetch('url1');
const promise2 = fetch('url2');
Promise.all([promise1, promise2])
.then(responses => console.log(responses))
.catch(error => console.error(error));

8. Dynamic Property Names: Versatile Object Keys

You can use variables as object property names using square brackets:

const key = 'name';
const person = { [key]: 'Alice' };
console.log(person.name); // Output: Alice

9. Template Literals Magic: String Formatting

Template literals (`${}`) allow you to embed expressions in strings:

const name = 'Alice';
const greeting = `Hello, ${name}!`;
console.log(greeting); // Output: Hello, Alice!

10. NaN Checking: A Safer Alternative

Use `Number.isNaN()` to accurately check if a value is NaN:

const notANumber = 'Not a number';
console.log(Number.isNaN(notANumber)); // Output: false

11. Optional Chaining (`?.`): Tame Undefined Values

Avoid errors with optional chaining when dealing with nested properties:

const user = { info: { name: 'Alice' } };
console.log(user.info?.age); // Output: undefined

12. Regex Revival: Mastering Patterns

Regular expressions (`RegExp`) are powerful tools for pattern matching:

const text = 'Hello, world!';
const pattern = /Hello/g;
console.log(text.match(pattern)); // Output: ['Hello']

13. JSON.parse() Reviver: Transform Parsed Data

The `reviver` parameter in `JSON.parse()` lets you transform parsed JSON:

const data = '{"age":"30"}';
const parsed = JSON.parse(data, (key, value) => {
if (key === 'age') return Number(value);
return value;
});
console.log(parsed.age); // Output: 30

14. Cool Console Tricks: Debugging Delights

Go beyond `console.log()` with `console.table()` and `console.groupCollapsed()`:

const users = [{ name: 'Alice' }, { name: 'Bob' }];
console.table(users);
console.groupCollapsed(’Details’);
console.log(’Name: Alice’);
console.log(’Age: 30’);
console.groupEnd();

15. Fetch with `async`/`await`: Asynchronous Simplicity

`async`/`await` with `fetch()` simplifies handling asynchronous requests:

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

fetchData();

16. Closures Unleashed: Data Privacy

Closures let you create private variables in functions:

function createCounter() {
let count = 0;
return function () {
count++;
console.log(count);
};
}

const counter = createCounter();
counter(); // Output: 1
counter(); // Output: 2

17. Memoization for Speed: Efficient Recalculation

Memoization caches function results for improved performance:

function fibonacci(n, memo = {}) {
if (n in memo) return memo[n];
if (n <= 2) return 1;
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
return memo[n];
}

console.log(fibonacci(10)); // Output: 55

18. Hail the Intersection Observer: Effortless Scroll Effects

Use the Intersection Observer API for lazy loading and scroll animations:

const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('fade-in');
observer.unobserve(entry.target);
}
});
});

const elements = document.querySelectorAll('.animate');
elements.forEach(element => observer.observe(element));

19. ES6 Modules for Clean Code: Organized and Modular

Use ES6 modules for clean, modular code:

// math.js
export function add(a, b) {
return a + b;
}

// app.js
import { add } from './math.js';
console.log(add(2, 3)); // Output: 5

20. Proxies: Beyond Objects

Proxies allow you to intercept and customize object operations:

const handler = {
get(target, prop) {
return `Property "${prop}" doesn't exist.`;
}
};

const proxy = new Proxy({}, handler);
console.log(proxy.name); // Output: Property "name" doesn’t exist.

With these 20 JavaScript tips and tricks in your toolkit, you're well-equipped to take your coding skills to the next level. Keep exploring, experimenting, and building amazing things with JavaScript!

— — — — — —

LinkedIn Profile

--

--

Satyam Verma

Senior Software Developer | 6 Years of Crafting Code | Sharing Wisdom Through Blogs | Let's Explore the Tech Universe Together!