-
临摹微笑
您可以将它们放在一个数组中并使用布尔标志来检查是否都是数字,使用Array.prototype.every(并检查NaNs,因为typeof NaN === 'number'):function addNumbers(...args) { var all_numbers = args.every(a => typeof a == 'number' && !isNaN(a)); if (all_numbers) { var sum = 0; args.forEach(n => sum += n); console.log(sum); } else { console.log('something is not right!'); }}addNumbers(5, 6);addNumbers(5, 6.2);addNumbers(5, 6, NaN);addNumbers(5, 6, []);addNumbers(5, 6, {});addNumbers(5, '6');addNumbers('5', 6);
-
Smart猫小萌
我认为它更易读的形式,使用Array.prototype.every,Number.isInteger和Array.prototype.reduce.我不确定你想对错误做什么,所以我们只是记录它们(和结果);// consider floating pointconst isNumber = n => typeof n == 'number' && !isNaN(n)const addNumbers = (...args) => { const isValid = args.every(isNumber); // const isValid = args.every(Number.isInteger); if (!isValid) { console.log('Error'); return; } const sum = args.reduce((sum, curr) => sum + curr, 0); console.log(sum); return sum;}addNumbers(5, 6);addNumbers(5, 6, NaN);addNumbers(5, '6');addNumbers('5', '6');addNumbers('5', 6);addNumbers(5.5, 6);addNumbers(5.5, 6, 6.4, 65);addNumbers(5.5, 6, {});
-
SMILET
您可以使用...rest 参数语法将输入作为数组使用,然后使用Array.prototype.reduce对它们求和,同时您可以使用+运算符将元素转换为数字并将它们相加:function addNumbers(...nums) { return nums.reduce((sum, num) => sum + +num)}console.log(addNumbers(1, 2, "3", 4));或者如果你想跳过非数字(NaN如果你使用第一个代码片段会产生)只需在添加之前检查类型,如果数字你很好,否则用 a 替换它0:function addNumbers(...nums) { return nums.reduce((sum, num) => sum + (!(typeof(num) === "number") ? 0 : +num));}console.log(addNumbers(1, 2, "3", 4, "non-number"));