createMathOperation
依赖
import baseToNumber from './baseToNumber.js';
import baseToString from './baseToString.js';源码
/**
* 创建对两个值做数学运算的函数
*
* @private
* @param {Function} operator 执行数学运算的函数
* @param {number} [defaultValue] 默认返回值(未传值)
* @returns {Function} 返回新的数学运算函数
*/
function createMathOperation(operator, defaultValue) {
return (value, other) => {
// 当两个数都未传递时
if (value === undefined && other === undefined) {
return defaultValue;
}
// 当第二个数未传递时
if (value !== undefined && other === undefined) {
return value;
}
// 当第一个数未传递时
if (other !== undefined && value === undefined) {
return other;
}
// 当传递的参数类型存在字符串时,将两个值都转换成字符串
if (typeof value === 'string' || typeof other === 'string') {
value = baseToString(value);
other = baseToString(other);
}
// 否则将两个值转成数字
else {
value = baseToNumber(value);
other = baseToNumber(other);
}
return operator(value, other);
};
}原理
思路
undefined 检测
类型转换
相关链接
参考
Last updated