This directory contains JavaScript code examples and utilities. Below is a brief description of each file in this directory.
All JavaScript code must follow JSDoc standards for comprehensive documentation:
Every JavaScript file should start with a @fileoverview:
/**
* @fileoverview Brief description of the file's purpose
*
* Detailed description of what this module provides,
* its main features, and usage patterns.
*
* @author Your Name
* @version 1.0
* @license MIT
*/All functions must include complete JSDoc:
/**
* Brief description of what the function does.
*
* Detailed explanation including algorithm details,
* performance characteristics, or important notes.
*
* @param {string} param1 - Description of param1
* @param {number} [param2=0] - Optional param with default value
* @param {Object} options - Configuration options
* @param {boolean} options.enabled - Whether feature is enabled
*
* @returns {Promise<boolean>} Description of return value
*
* @throws {TypeError} When param1 is not a string
* @throws {RangeError} When param2 is negative
*
* @example
* const result = await myFunction('test', 5, { enabled: true });
* console.log(result); // true
*
* @example
* // Error handling
* try {
* myFunction(123, -1);
* } catch (error) {
* console.error(error.message);
* }
*
* @see {@link relatedFunction}
* @since 1.0.0
*/
async function myFunction(param1, param2 = 0, options = {}) {
// implementation
}Use JSDoc type annotations for better IDE support:
/** @type {string} */
const userName = 'John';
/** @type {Array<number>} */
const scores = [95, 87, 92];
/** @type {Object<string, number>} */
const ages = { alice: 30, bob: 25 };
/** @type {Function} */
const callback = () => {};
/**
* @typedef {Object} User
* @property {string} name - User's name
* @property {number} age - User's age
* @property {boolean} isActive - Whether user is active
*/
/** @type {User} */
const user = { name: 'Alice', age: 30, isActive: true };// Use const/let, never var
const MAX_SIZE = 100; // Constants in UPPER_SNAKE_CASE
let currentIndex = 0; // Variables in camelCase
// Use arrow functions for callbacks
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
// Use template literals
const greeting = `Hello, ${userName}!`;
// Use destructuring
const { name, age } = user;
const [first, ...rest] = numbers;
// Use default parameters
function greet(name = 'Guest') {
return `Hello, ${name}`;
}
// Use async/await over promises
async function fetchData() {
try {
const response = await fetch(url);
return await response.json();
} catch (error) {
console.error('Error:', error);
}
}- Naming: Use
camelCasefor variables/functions,PascalCasefor classes - Semicolons: Use semicolons consistently
- Equality: Use
===and!==(strict equality) - Error Handling: Always handle errors in async code
- Comments: Explain "why" not "what"
- Single Responsibility: Each function should do one thing well
/**
* @module MyModule
* @description Provides utility functions for data processing
*/
/**
* Processes data items
* @param {Array<*>} items - Items to process
* @returns {Array<*>} Processed items
*/
export function processItems(items) {
return items.filter(item => item !== null);
}
/**
* Validates input data
* @param {*} data - Data to validate
* @returns {boolean} True if valid
*/
export function validateData(data) {
return data !== null && data !== undefined;
}- Description: A debounce function in JavaScript limits how often a given function can be called in quick succession. This is particularly useful when handling events like scroll or resize, where frequent firing can impact performance.
- Usage: The
debouncefunction takes two arguments: the function to debounce and the delay in milliseconds. It returns a debounced version of the function. - Example:
const logMessage = (message) => { console.log(message); }; const debouncedLog = debounce(logMessage, 300); debouncedLog('Hello'); debouncedLog('World'); debouncedLog('!');
- Description: A throttle function in JavaScript limits how often a given function can be called in a given time period. This is particularly useful when handling events like scroll or resize, where frequent firing can impact performance.
- Usage: The
throttlefunction takes two arguments: the function to throttle and the limit in milliseconds. It returns a throttled version of the function. - Example:
const logMessage = (message) => { console.log(message); }; const throttledLog = throttle(logMessage, 1000); throttledLog('Hello'); throttledLog('World'); throttledLog('!');
- Description: A simple "Hello, World!" program in JavaScript.
- Usage: Run the file using a JavaScript runtime like Node.js.
- Example:
console.log("Hello, World!");
If you have any JavaScript code examples or utilities that you would like to add to this directory, please follow the contribution guidelines in the main README.md file of the repository.