Javascript

Javascript


How to Javascript

This is the fastest way to reload the javascript shotgun, more weapon attachments are listed after.

Semicolons

Semicolons are optional in JavaScript, but it’s good practice to use them to avoid unexpected behavior.

let x = 10;  // Semicolon used
let y = 20  // Semicolon optional

Equality Checks

JavaScript has two types of equality checks: == (loose equality) and ===(strict equality). Always prefer ===.

console.log(5 == "5");  // true (loose equality)
console.log(5 === "5"); // false (strict equality)

Functions

Functions can be declared using function, arrow functions , or as function expressions.

// Traditional function
function add(a, b) {
    return a + b;
}

// Arrow function
const add = (a, b) => a + b;

// Function expression
const add = function(a, b) {
    return a + b;
};

Hoisting

JavaScript hoists variable and function declarations to the top of their scope. This can lead to unexpected behavior.

console.log(x);  // undefined (not an error)
var x = 10;

Template Literals

Use backticks ( ` ) for template literals to embed variables and multi-line strings.

const name = "Alice";
console.log(`Hello, ${name}!`);  // Hello, Alice!

// Multi-line string
const message = `
This is a
multi-line string
`;

Promises and Async/Await

Promises and async/await are used to handle asynchronous operations.

// Using Promises
const promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("Done!"), 1000);
});

promise.then(result => console.log(result));  // Done!

// Using async/await
async function fetchData() {
    const result = await promise;
    console.log(result);  // Done!
}

No system("cls")

JavaScript does not have a direct equivalent of system("cls"). Use console.clear() to clear the console.

console.clear();  // Clears the console

Modules

JavaScript uses import and export for modular code.

// Exporting
export const add = (a, b) => a + b;

// Importing
import { add } from './math.js';

Destructuring

Destructuring allows you to unpack values from arrays or objects into variables.

// Array destructuring
const [a, b] = [1, 2];

// Object destructuring
const { name, age } = { name: "Alice", age: 25 };

Spread and Rest Operators

The spread ( ... ) operator is used to expand elements, while the rest operator is used to collect them.

// Spread operator
const arr = [1, 2, 3];
const newArr = [...arr, 4];  // [1, 2, 3, 4]

// Rest operator
function sum(...numbers) {
    return numbers.reduce((acc, num) => acc + num, 0);
}

Syntax & Basics

Variables

// πŸ“¦ Variable declarations
let mutableVar = 10;       // Block-scoped, reassignable
const immutableVar = 20;   // Block-scoped, constant
var functionScoped = 30;   // ⚠️ Avoid (hoisting, function scope)

Data Types

// 🏷️ Primitive types
const str = "text";
const num = 42;
const bool = true;
const nullVal = null;
const undefinedVal = undefined;
const symbol = Symbol('id');

// 🧩 Reference types
const obj = {a: 1};
const arr = [1, 2, 3];
const func = () => {};

Conditionals

// πŸ€” Decision making
if (score > 90) {
    grade = 'A';
} else if (score > 75) {
    grade = 'B';
} else {
    grade = 'C';
}

// πŸ”€ Switch statement
switch(day) {
    case 1: console.log('Monday'); break;
    default: console.log('Unknown'); break;
}

Loops

// πŸ”„ Iteration methods
for (let i=0; i<5; i++) { ... }
while (condition) { ... }

// 🎯 Array operations
arr.forEach(item => { ... });
const newArr = arr.map(item => item * 2);

Functions

// πŸ“œ Function types
function add(a, b) { return a + b; }  // Declaration
const multiply = (a, b) => a * b;      // Arrow function

// πŸš€ Immediately Invoked
(() => { console.log('Running now!'); })();

Template Literals

// 🎨 String formatting
const name = 'Alice';
console.log(`Hello ${name}!`);
console.log(`Multi-line
string example`);

Common Operations

DOM Manipulation

// 🌐 DOM interactions
const btn = document.querySelector('#submit');
const list = document.getElementById('items');

// ✏️ DOM modifications
btn.textContent = 'Click Me';
list.innerHTML = '<li>New Item</li>';

Event Handling

// πŸ–±οΈ Event listeners
btn.addEventListener('click', handleClick);

// 🎯 Delegation pattern
document.body.addEventListener('click', e => {
    if (e.target.matches('.item')) {
        handleItemClick(e.target);
    }
});

Client-Side Storage

// πŸ’Ύ Storage methods
localStorage.setItem('key', JSON.stringify(data));
const saved = JSON.parse(localStorage.getItem('key'));

// πŸͺ Cookie handling
document.cookie = 'username=John; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';

Data Structures

Arrays

// πŸ“Ά Array operations
const nums = [1, 2, 3];
nums.push(4);       // [1,2,3,4]
nums.splice(1, 1);  // Remove at index 1
const sum = nums.reduce((acc, val) => acc + val, 0);

Sets

// 🎯 Unique collections
const unique = new Set([1, 2, 2, 3]); // {1,2,3}

Map

// πŸ—ΊοΈ Key-value storage
const map = new Map();
map.set('key', 'value');

Weak Collections

// πŸ•ΈοΈ Garbage-collected maps
const weakMap = new WeakMap();
const objKey = {};
weakMap.set(objKey, 'private data');

Object-Oriented JS

Classes

// πŸ—οΈ Class structure
class Person {
    #privateField;  // πŸ”’ Private field
    
    constructor(name) {
        this.name = name;
        this.#privateField = 'secret';
    }
    
    static species = 'Homo sapiens';  // 🧳 Static property
    
    greet() {
        console.log(`Hello ${this.name}`);
    }
}

Prototypes & Inheritance

// 🧬 Prototypal inheritance
function Animal(name) {
    this.name = name;
}
Animal.prototype.speak = function() { ... };

class Dog extends Animal {
    bark() { ... }
}

Context Binding

// πŸ”— Binding context
const boundFunc = obj.method.bind(obj);
boundFunc.call(context);
boundFunc.apply(context, args);

Asynchronous JS

Promises

// ⏳ Promise chain
fetch('url')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error))
    .finally(() => cleanup());

Async/Await

// πŸ•’ Async operations
async function fetchData() {
    try {
        const res = await fetch('url');
        return await res.json();
    } catch (err) {
        handleError(err);
    }
}

Event Loop

⏳ Microtasks: Promises, MutationObserver
⏰ Macrotasks: setTimeout, DOM events, I/O

Error Handling

try/catch

// 🚨 Error handling
try {
    riskyOperation();
} catch (err) {
    console.error('Caught:', err.message);
} finally {
    cleanup();
}

Custom Errors

// πŸ› οΈ Custom error type
class ValidationError extends Error {
    constructor(message) {
        super(message);
        this.name = "ValidationError";
    }
}

Why Solo Dev?

This reference website is not for beginners
Solo Dev is strictly for devs who already know the game and need a beautiful cheat sheet on their second monitor which looks better than GeeksforGeeks


this portion goes away when you shrink the screen ;)

Our popular languages: