JavaScript 常用方法 · 口诀手册

2 阅读3分钟
  • 想“找一个” → 用 find
  • 想“留一批” → 用 filter
  • 想“保留小数” → toFixed() → 记住它返回的是 字符串
  • 想“去单位取数” → parseInt()
  • 想“格式化日期” → toISOString().slice(0,10)
  • 删头 → shift(),删尾 → pop()
  • 反转不改原数组 → 先 slice() 拷贝
  • 合并数组 → 用 ... 最优雅
  • 查属性 → hasOwnProperty'key' in obj
  • 对象转数组对 → Object.entries()
  • 判断整数 → Number.isInteger()
  • 判断 NaN → 记住只能用 Number.isNaN()
  • 调用时临时换 this → call
  • 永久绑定 this → bind
  • 累计计算 → reduce,别忘了初始值!

🔥 记得快 · 用得准 · 不踩坑
💡 适用于初学者到进阶者 | 共 6 大类 · 40+ 条核心口诀


🔤 一、字符串方法口诀

方法口诀示例
trim()去空格,用 trim" hi ".trim() → "hi"
includes()查包含,includes"abc".includes("b") → true
split() / join()切分用 split,拼接用 join"a-b-c".split("-") ["a","b"].join(",")
replace() / replaceAll()换一次 replace,换全部 replaceAll"aa".replace("a","b") → "ba" "aa".replaceAll("a","b") → "bb"
padStart() / padEnd()补左边 padStart,补右边 padEnd"5".padStart(2,"0") → "05"
repeat()重复几次我来 repeat"x".repeat(3) → "xxx"
toUpperCase() / toLowerCase()转大小写很简单"Hi".toLowerCase() → "hi"

📌 避坑提醒
replace() 默认只替换第一个
✅ 想全替换用 replaceAll() 或正则 /g


🔢 二、数组方法口诀

方法口诀示例
push() / pop()尾进尾出:push/pop[1,2].push(3) → 长度变3 [1,2].pop() → 返回2
unshift() / shift()头进头出:unshift/shift少用,性能差
map()映射转换靠 map[1,2].map(x=>x*2)[2,4]
filter()筛选留谁看 filter[1,2,3].filter(x=>x>1)[2,3]
find()找一个用 find.find(x=>x.id===1) → 找到即停
some() / every()查有无用 some/everysome(有满足)/every(全满足)
reduce()累计计算靠 reduce(sum,x)=>sum+x, 0 别忘初始值!
sort()排序数字要函数[10,1].sort((a,b)=>a-b)[1,10]
slice()截取拷贝 slicearr.slice(1,3) → 安全不改原数组
splice()真删真改 splicesplice(1,2) → 从索引1删2个
[...arr]展开拷贝最安全[...arr] 是现代 JS 首选
[...new Set(arr)]Set 去重真方便一行去重 [1,2,2] → [1,2]

📌 避坑提醒

  • push() 返回的是长度,不是数组
  • sort() 默认按字符串排,数字必须传 (a,b)=>a-b
  • forEach() 没有返回值,不能链式调用
  • ✅ 数组拷贝别直接赋值,用 [...arr]

📦 三、对象方法口诀

方法口诀示例
Object.keys()键名 keys,值 valueskeys(obj)['a','b']
Object.values()values(obj)[1,2]
Object.entries()键值对 entriesentries(obj)[["a",1],["b",2]]
{...obj}合并对象展开始{...o1, ...o2} 简洁优雅
Object.assign()浅拷贝用 assign 或展开Object.assign({}, obj)
hasOwnProperty()查自有属性 hasOwnPropertyobj.hasOwnProperty('name')
Object.freeze()冻结对象不能改属性无法增删改

📌 避坑提醒

  • for...in 会遍历原型链
  • ✅ 查自有属性用 hasOwnProperty
  • ✅ 冻结对象用 Object.freeze(obj)

🔢 四、数字与判断口诀

方法口诀示例
toFixed()保留小数 toFixed(3.141).toFixed(2)"3.14"(字符串!)
parseInt()取整用 parseIntparseInt("100px")100
parseFloat()浮点 parseFloatparseFloat("3.14%")3.14
Number.isInteger()判整数 Number.isIntegerNumber.isInteger(5)true
Number.isNaN()判 NaN 只能用 Number.isNaNNumber.isNaN(NaN)true NaN === NaNfalse

📌 避坑提醒

  • isNaN("abc")true(错误类型转换)
  • ✅ 用 Number.isNaN() 更安全
  • toFixed() 返回字符串,注意类型转换

🕰 五、日期方法口诀

方法口诀示例
Date.now()当前时间戳 Date.now()Date.now() → 毫秒数
toISOString()格式化日期 toISOStringnew Date().toISOString().slice(0,10)"2024-04-05"

📌 技巧
快速获取今天日期:

new Date().toISOString().slice(0, 10)

🔗 六、函数 this 绑定口诀

方法口诀示例
call()call 是马上调,this 和参数一起传fn.call(obj, a, b)
bind()bind 是生成新函数,this 永远不变const fn = func.bind(obj)
apply()apply 参数用数组fn.apply(obj, [a,b])(基本被 ... 取代)

📌 理解口诀

  • call → “打电话”:立刻说
  • bind → “绑定”:永久固定
  • apply → “申请材料用文件夹”:参数放一个“数组”里

🧠 七、通用避坑口诀(必背 TOP 6)

口诀解释
1. map 有返回,forEach 没有forEach 不能用于生成新数组
2. sort 数字要比较函数否则 [10,1] 排成 [1,10]
3. splice 改原数组,slice 不改操作前想清楚是否允许修改
4. push 返回长度,不是数组别写 const arr = old.push()
5. 直接赋值是引用,拷贝要用展开[...arr] / {...obj}
6. NaN 不等于自己唯一一个 x !== x 的值,只能用 Number.isNaN()