一句话:先搞清 类型与
==,再记数组/对象常用方法——面试和写业务都够用。
写在前面
本文合并原「js 基础知识」与「js 常用函数」两篇,按类型 → 语法 → 实用函数结构整理。
一、数据类型
原始类型 vs 引用类型
| 原始 | 引用 |
|---|---|
undefined、null、boolean、number、string、symbol、bigint |
object(含 Array、Function、Date) |
typeof 与 instanceof
javascript
typeof null; // 'object'(历史 bug)
typeof []; // 'object'
[] instanceof Array; // true
typeof:适合原始类型 + 区分 functioninstanceof:判断引用类型原型链
隐式转换(面试高频)
| 表达式 | 结果 | 原因 |
|---|---|---|
[] == false |
true | [] → '' → 0,false → 0 |
{} == false |
false | {} → [object Object] → NaN |
'' == 0 |
true | 字符串转数字 |
建议:业务代码用 ===,显式 Number() / String()。
转数字 / 字符串
javascript
Number('42'); // 42
parseInt('42px'); // 42
parseFloat('3.14');
String(123); // '123'
(123).toString();
二、运算符与流程
- 算术:
+ - * / % **;++i前置先加,i++后置后用旧值 - 比较:
===/!==优先 - 逻辑:
&&短路取假,||短路取真,??仅 null/undefined - 三元:
cond ? a : b
javascript
if (x) { /* ... */ }
else if (y) { /* ... */ }
else { /* ... */ }
switch (n) {
case 1: break;
default: break;
}
for (const item of arr) { /* ... */ }
arr.forEach((v, i) => { /* ... */ });
三、数组常用
javascript
// 去重(对象数组按 key)
function uniqueBy(arr, key) {
const seen = new Set();
return arr.filter(item => {
const k = item[key];
if (seen.has(k)) return false;
seen.add(k);
return true;
});
}
// 排序(日期字段)
arr.sort((a, b) => new Date(a.date) - new Date(b.date));
// ES 常用
arr.map(x => x * 2);
arr.filter(x => x > 0);
arr.find(x => x.id === 1);
arr.some(x => x > 0);
arr.every(x => x > 0);
arr.reduce((acc, cur) => acc + cur, 0);
[...arr]; // 浅拷贝
Array.from(new Set(arr)); // 原始值去重
四、字符串与编码
HTML 转义(防 XSS 展示)
javascript
function escapeHtml(str) {
if (typeof str !== 'string') return str;
return str
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
Base64(浏览器)
javascript
function toBase64(str) {
return btoa(encodeURIComponent(str));
}
function fromBase64(b64) {
return decodeURIComponent(atob(b64));
}
// Unicode 复杂场景可用 js-base64 库
五、对象与 JSON
javascript
const obj = { a: 1, b: 2 };
Object.keys(obj);
Object.values(obj);
Object.entries(obj);
const copy = { ...obj }; // 浅拷贝
JSON.parse(JSON.stringify(obj)); // 深拷贝(丢 function/undefined)
六、函数
javascript
function add(a, b) { return a + b; }
const mul = (a, b) => a * b;
// 默认参数与解构
function greet({ name = 'guest' } = {}) {
return `Hello, ${name}`;
}
踩坑
typeof null === 'object'— 用=== null判断空for...in遍历数组会带上原型链 — 数组用for...ofJSON.stringify循环引用报错 — 用库或 WeakSet- 浮点精度:
0.1 + 0.2 !== 0.3— 金额用整数分或 decimal 库
小结
- 类型与
===是基础中的基础 - 数组
map/filter/reduce+ 对象展开覆盖 80% 日常 - 实用函数(转义、Base64、去重)收藏即用
原 js常用函数 已合并入本篇。


全部评论(0)