← 返回
内容创作 中文

JavaScript

Write robust JavaScript with async patterns, type coercion handling, and modern ES2023+ features.
使用异步模式、类型强制转换处理和现代 ES2023+ 特性编写健壮的 JavaScript。
ivangdavila
内容创作 clawhub v1.0.3 1 版本 99396.2 Key: 无需
★ 5
Stars
📥 3,357
下载
💾 363
安装
1
版本
#latest

概述

When to Use

User needs JavaScript expertise — from core language features to modern patterns. Agent handles async/await, closures, module systems, and ES2023+ features.

Quick Reference

TopicFile
-------------
Async patternsasync.md
Type coercion rulescoercion.md
Array and object methodscollections.md
Modern ES featuresmodern.md

Equality Traps

  • == coerces: "0" == false is true — use === always
  • NaN !== NaN — use Number.isNaN(), not === NaN
  • typeof null === "object" — check === null explicitly
  • Objects compare by reference — {} === {} is false

this Binding

  • Regular functions: this depends on call site — lost in callbacks
  • Arrow functions: this from lexical scope — use for callbacks
  • setTimeout(obj.method) loses this — use arrow or .bind()
  • Event handlers: this is element in regular function, undefined in arrow (if no outer this)

Closure Traps

  • Loop variable captured by reference — let in loop or IIFE to capture value
  • var hoisted to function scope — creates single binding shared across iterations
  • Returning function from loop: all share same variable — use let per iteration

Array Mutation

  • sort(), reverse(), splice() mutate original — use toSorted(), toReversed(), toSpliced() (ES2023)
  • push(), pop(), shift(), unshift() mutate — spread [...arr, item] for immutable
  • delete arr[i] leaves hole — use splice(i, 1) to remove and reindex
  • Spread and Object.assign are shallow — nested objects still reference original

Async Pitfalls

  • Forgetting await returns Promise, not value — easy to miss without TypeScript
  • forEach doesn't await — use for...of for sequential async
  • Promise.all fails fast — one rejection rejects all, use Promise.allSettled if need all results
  • Unhandled rejection crashes in Node — always .catch() or try/catch with await

Numbers

  • 0.1 + 0.2 !== 0.3 — floating point, use integer cents or toFixed() for display
  • parseInt("08") works now — but parseInt("0x10") is 16, watch prefixes
  • Number("") is 0, Number(null) is 0 — but Number(undefined) is NaN
  • Large integers lose precision over 2^53 — use BigInt for big numbers

Iteration

  • for...in iterates keys (including inherited) — use for...of for values
  • for...of on objects fails — objects aren't iterable, use Object.entries()
  • Object.keys() skips non-enumerable — Reflect.ownKeys() gets all including symbols

Implicit Coercion

  • [] + [] is "" — arrays coerce to strings
  • [] + {} is "[object Object]" — object toString
  • {} + [] is 0 in console — {} parsed as block, not object
  • "5" - 1 is 4, "5" + 1 is "51" — minus coerces, plus concatenates

Strict Mode

  • "use strict" at top of file or function — catches silent errors
  • Implicit globals throw in strict — x = 5 without declaration fails
  • this is undefined in strict functions — not global object
  • Duplicate parameters and with forbidden

版本历史

共 1 个版本

  • v1.0.3 当前
    2026-03-28 16:31 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

productivity

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 437 📥 147,175
ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,349 📥 317,704
content-creation

AdMapix

fly0pants
广告情报与应用数据分析助手,支持搜索广告素材、分析应用排名、下载量、收入及市场洞察,用于广告素材和竞品分析。
★ 294 📥 136,401