单页销售网站源码,有谁做彩票网站,视觉营销的网站设计,极速网站制作在 JavaScript 中#xff0c;函数参数的归一化处理是一种将不同类型或格式的参数转换为统一的标准或格式的过程。这样做的目的是为了提高代码的灵活性、可维护性和可重用性。 以下是一些常见的函数参数归一化处理的方式#xff1a; 数据类型转换#xff1a;将不同类型的参数…在 JavaScript 中函数参数的归一化处理是一种将不同类型或格式的参数转换为统一的标准或格式的过程。这样做的目的是为了提高代码的灵活性、可维护性和可重用性。 以下是一些常见的函数参数归一化处理的方式 数据类型转换将不同类型的参数转换为相同的数据类型例如将字符串转换为数字或者将对象转换为数组等。默认值处理为参数提供默认值以便在调用函数时如果未提供该参数仍然可以使用默认值进行处理。参数验证对传入的参数进行验证确保它们符合函数的要求或预期的格式。可以检查参数是否为 null、undefined、特定的数据类型、满足一定的条件等。参数解构使用 ES6 中的参数解构来提取和处理参数使代码更加简洁和易读。参数映射或转换对参数进行映射或转换将一种格式的参数转换为另一种格式以便更方便地进行后续处理。错误处理在参数归一化过程中进行错误检查和处理抛出异常或返回错误信息以便在调用函数时能够及时处理错误情况。 通过进行函数参数的归一化处理可以使函数更加健壮和灵活能够处理各种不同情况下的参数。这样可以提高代码的可扩展性和可维护性使函数更易于使用和重用。 下面是一个示例展示了如何进行函数参数的归一化处理以格式化时间为例
function _formatNormalize(formatter) {if (typeof formatter function) {return formatter;}if (typeof formatter ! string) {throw new TypeError(formatter must be string or function);}if(formatter data) {formatter yyyy-MM-dd}else if(formatter datatime) {formatter yyyy-MM-dd HH:mm:ss}return (dataInfo) {const {yyyy, MM, dd, HH, mm, ss, ms} dataInforeturn formatter.replace(yyyy, yyyy).replace(MM, MM).replace(dd, dd).replace(HH, HH).replace(mm, mm).replace(ss, ss).replace(ms, ms)}
}/*** 格式化一个日期* param {*} date 日期对象* param {*} formatter 格式化参数或 自定义函数* param {*} isPad 小于10是否补0*/
function formate(date, formatter, isPad false) {formatter _formatNormalize(formatter);const dateInfo {year: date.getFullYear(),month: date.getMonth() 1,date: date.getDate(),hours: date.getHours(),minutes: date.getMinutes(),seconds: date.getSeconds(),milliseconds: date.getMilliseconds()}dateInfo.yyyy isPad ? dateInfo.year.toString().padStart(4, 0) : dateInfo.yeardateInfo.MM isPad ? dateInfo.month.toString().padStart(2, 0) : dateInfo.monthdateInfo.dd isPad ? dateInfo.date.toString().padStart(2, 0) : dateInfo.datedateInfo.HH isPad ? dateInfo.hours.toString().padStart(2, 0) : dateInfo.hoursdateInfo.mm isPad ? dateInfo.minutes.toString().padStart(2, 0) : dateInfo.minutesdateInfo.ss isPad ? dateInfo.seconds.toString().padStart(2, 0) : dateInfo.secondsdateInfo.ms isPad ? dateInfo.milliseconds.toString().padStart(3, 0) : dateInfo.millisecondsreturn formatter(dateInfo)
}// 可调用方式// 2024-2-1
console.log(formate(new Date(), data))// 2024-02-01 11:5:2
console.log(formate(new Date(), datatime));// 2024-02-01
console.log(formate(new Date(), data, true))// {
// year: 2024,
// month: 3,
// date: 17,
// hours: 11,
// minutes: 39,
// seconds: 55,
// milliseconds: 471,
// yyyy: 2024,
// MM: 03,
// dd: 17,
// HH: 11,
// mm: 39,
// ss: 55,
// ms: 471
// } info
formate(new Date(), (dateInfo) {console.log(dateInfo, time)
}, true)