/** * @description 生成指定位随机数的函数 * @param {number} length 随机数的位数 * @param {boolean} isUpperCase 是否大写 * @returns {string} 随机36进制数 */ /** * 生成指定位随机数的函数 * @param {number} length 随机数的位数 * @param {boolean} isUpperCase 是否大写 * @returns {string} 随机36进制数 */ export function getRandomNumber(length = 8, isUpperCase = false) { let randomNumber = Math.random() .toString(36) .substring(2, 2 + length); if (isUpperCase) { randomNumber = randomNumber.toUpperCase(); } return randomNumber; } /** * 下载文件 * @param {string} url 文件地址 * @param {string} downloadName 文件名称 */ export function downloadFile(url, downloadName) { const a = document.createElement('a'); a.href = url; a.download = downloadName; a.click(); a.remove(); } /** * 柯里化函数(将接受多个参数的函数转换为一系列接受单个参数的函数) * @param {Function} fn 需要柯里化的函数 * @returns Function */ export let curry = (fn) => { if (typeof fn !== 'function') throw new Error('No function provided'); return function curriedFn(...args) { if (args.length < fn.length) return (...args2) => curriedFn(...args, ...args2); return fn(...args); }; };