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 15 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.