Skip to main content
← ⚑ JavaScript & the browserΒ·Module C5 Β· Lesson 5
TaskWrite a JSDoc'd function clamp(value, lo, hi) that clamps value into [lo, hi]. Include @param and @returns tags. Call it with clamp(5, 0, 10), clamp(-3, 0, 10), clamp(99, 0, 10) and log the results.

JSDoc @param and @returns: IDE hints without TS

150 XP10 min
Theory

What JSDoc gives you

A JSDoc block comment above a function makes editors treat it almost like TypeScript:

  • hover the function name β†’ see params and return type
  • call it with wrong types β†’ red squiggle in VS Code
  • arg auto-complete shows expected shapes

No tsconfig. No build step. Just comments your editor already understands.

/**
 * Format a price with currency.
 * @param {number} cents - price in minor units
 * @param {string} [currency="USD"] - ISO currency code
 * @returns {string} formatted price like "$12.34"
 */
function formatPrice(cents, currency = "USD") {
  return new Intl.NumberFormat("en", {
    style: "currency",
    currency,
  }).format(cents / 100);
}

Key tags

  • @param {type} name - description β€” one per parameter
  • @param {type} [name=default] - description β€” optional param
  • @returns {type} description β€” return value
  • @throws {Error} description β€” what errors can fire

When this is enough

90% of small/medium JS projects need exactly this. The other 10% (large teams, complex generics) reach for TypeScript. Lesson C5-09 has the honest "when to use TS" call.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.