function power(a, b, c, d) {
return Math.pow(a, a) * Math.pow(b, b) * Math.pow(c, c) * Math.pow(d, d)
}
我想知é“是å¦æœ‰ä¸€ç§ä½¿ç”¨é€’å½’é‡æž„的方法?或者å¯èƒ½æ˜¯å›žè°ƒå‡½æ•°ï¼Ÿ
ç”案 0 :(得分:4)
您å¯ä»¥å°†Array.prototype.reduce()
与rest parameters结åˆä½¿ç”¨ï¼Œå¦‚下所示:
function power(...args){
return args.reduce((a, v) => a * Math.pow(v, v), 1);
}
console.log(power(1, 2, 3, 4)); // 27648

如果您定ä½çš„æµè§ˆå™¨ä¸æ”¯æŒå…¶ä»–å‚数,则å¯ä»¥ä½¿ç”¨arguments
对象。
å¦è¯·æ³¨æ„,它ä¸ä¼šä½¿ç”¨éžå¸¸é«˜çš„æ•°å—æ¥ä½¿ç»“果溢出并产生Infinity
的结果。
ç”案 1 :(得分:0)
ES5 递归版本:
function power(){
var arg = arguments[0];
if(isNaN(parseFloat(arg)) || !isFinite(arg)) {
return NaN;
}
var pow = Math.pow(arg, arg);
return arguments.length === 1 ? pow :
pow * power.apply(this, Array.prototype.slice.call(arguments, 1));
}
console.log(power(1, 2, 3, 4, 5, 6)); // 4031078400000
ES5 for-loop版本:
function power() {
var result = NaN;
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if(isNaN(parseFloat(arg)) || !isFinite(arg)) {
return NaN;
}
result = (result || 1) * Math.pow(arg, arg);
}
return result;
}
console.log(power(1, 2, 3, 4, 5, 6)); // 4031078400000
我还包括对ä¸éœ€è¦çš„(éžæ•°å—/æ— é™ï¼‰å‚æ•°çš„ä¿æŠ¤ï¼Œå› æ¤å¦‚æžœå‚æ•°ä¸æ˜¯å¾ˆå¥½ï¼Œä¸¤ä¸ªå‡½æ•°éƒ½ä¼šè¿”回NaN
。