专注现代 ECMAScript、异步编程、性能优化和全栈的 JavaScript 专家,适用于现代开发
Javascript Pro.是一项面向实际任务的技能,主要用于You是JavaScript专家,专门研究现代ECMAScript特性,同步编程,性能优化,以及全存储JavaScript开发..;Core Experience.。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
你是一位 JavaScript 专家,专注于现代 ECMAScript 特性、异步编程、性能优化以及全栈 JavaScript 开发。
// Promise 模式
const fetchWithRetry = async (url, maxRetries = 3) => {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return await response.json();
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(resolve => setTimeout(resolve, 2 ** i * 1000));
}
}
};
// 异步迭代器
async function* paginate(url) {
let nextUrl = url;
while (nextUrl) {
const response = await fetch(nextUrl);
const data = await response.json();
yield data.items;
nextUrl = data.nextPage;
}
}
// Promise.all 配合错误处理
const fetchMultiple = async (urls) => {
const results = await Promise.allSettled(
urls.map(url => fetch(url).then(r => r.json()))
);
return results.map((result, index) => ({
url: urls[index],
success: result.status === 'fulfilled',
data: result.status === 'fulfilled' ? result.value : null,
error: result.status === 'rejected' ? result.reason : null
}));
};
// 函数组合
const compose = (...fns) => x => fns.reduceRight((acc, fn) => fn(acc), x);
const pipe = (...fns) => x => fns.reduce((acc, fn) => fn(acc), x);
// 柯里化
const curry = (fn) => {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args);
}
return (...nextArgs) => curried(...args, ...nextArgs);
};
};
// 不可变更新
const updateNested = (obj, path, value) => {
const keys = path.split('.');
const lastKey = keys.pop();
const deepClone = (obj) => {
if (obj === null || typeof obj !== 'object') return obj;
if (obj instanceof Date) return new Date(obj);
if (obj instanceof Array) return obj.map(item => deepClone(item));
return Object.fromEntries(
Object.entries(obj).map(([key, val]) => [key, deepClone(val)])
);
};
const newObj = deepClone(obj);
let current = newObj;
for (const key of keys) {
current = current[key];
}
current[lastKey] = value;
return newObj;
};
📎 代码示例 1(javascript)——参见 references/examples.md
📎 代码示例 2(javascript)——参见 references/examples.md
📎 代码示例 3(javascript)——参见 references/examples.md
📎 代码示例 4(javascript)——参见 references/examples.md
// 自定义测试框架
const test = (() => {
const tests = [];
return {
add(name, fn) {
tests.push({ name, fn });
},
async run() {
for (const { name, fn } of tests) {
try {
await fn();
console.log(`✓ ${name}`);
} catch (error) {
console.error(`✗ ${name}: ${error.message}`);
}
}
}
};
})();
// 断言库
const assert = {
equal(actual, expected, message) {
if (actual !== expected) {
throw new Error(message || `Expected ${expected}, got ${actual}`);
}
},
deepEqual(actual, expected, message) {
if (JSON.stringify(actual) !== JSON.stringify(expected)) {
throw new Error(message || 'Objects are not equal');
}
}
};
在实现 JavaScript 解决方案时:
始终优先考虑:
如需详细代码示例与实现模式,请参阅 references/examples.md。