面试题答案
一键面试处理实参与形参不兼容情况
在调用 complexCalculation
函数时,我们需要对传入的 callback
参数进行类型检查,确保它是一个函数。如果不是函数,可以抛出一个错误或者返回一个默认值,以保证代码的健壮性。
function complexCalculation(a, b, callback) {
if (typeof callback!== 'function') {
throw new Error('The callback parameter must be a function');
}
let result = a + b;
return callback(result);
}
性能优化思路
-
函数设计:
- 缓存结果:如果计算结果在高频调用场景下不会改变,可以考虑缓存计算结果,避免重复计算。
- 减少函数调用开销:尽量避免在
complexCalculation
函数内部进行复杂且不必要的操作,以减少函数调用的开销。
-
参数校验:
- 提前校验:在函数外部对参数进行校验,避免在高频调用的函数内部重复进行校验操作,提高性能。
-
内存管理:
- 避免内存泄漏:确保
callback
函数没有引用外部变量,避免在函数执行完毕后仍然持有不必要的引用,导致内存泄漏。
- 避免内存泄漏:确保
代码示例
- 缓存结果:
let cache = {};
function complexCalculationCached(a, b, callback) {
const key = `${a}-${b}`;
if (cache[key]) {
return callback(cache[key]);
}
let result = a + b;
cache[key] = result;
return callback(result);
}
- 提前校验:
function validateCallback(callback) {
if (typeof callback!== 'function') {
throw new Error('The callback parameter must be a function');
}
}
function complexCalculationOptimized(a, b, callback) {
let result = a + b;
return callback(result);
}
// 调用时提前校验
let callbackFunction = function (result) {
return result * 2;
};
validateCallback(callbackFunction);
let result = complexCalculationOptimized(2, 3, callbackFunction);
console.log(result);