JavaScript:如何在for..of循环内抛出错误?代码调试求助
修正混合数组求和函数的错误
你代码里有几个关键问题导致无法正确抛出错误,下面逐个说明并给出修复后的代码:
主要错误点
- 数组类型判断错误:JavaScript中
typeof数组返回的是'object',而非'array',判断数组必须用Array.isArray(element)。 - 错误构造函数拼写错误:抛出错误时要用大写的
Error构造函数,小写的error不是内置构造函数,会导致未定义错误。 - 遗漏null的情况:
typeof null也返回'object',如果需要排除null(它不是对象实例),要在判断里加上element !== null。
修复后的代码
const mixedArr = [6, 12, 'miami', 1, true, 'barca', '200', 'lisboa', 8, 10, { "color": "purple", "type": "minivan"}] function sum(mix) { if (mix.length === 0) return 0; let mixedSum = 0; for (const element of mix) { if (typeof element === 'string') { mixedSum += element.length; } else if (Array.isArray(element) || (typeof element === 'object' && element !== null)) { throw new Error('error'); } else { mixedSum += element; } } return mixedSum; }; console.log(sum(mixedArr)) // 执行后会正确抛出Error
额外说明
循环里的element最好加上const声明,避免变量泄漏到全局作用域,这是JavaScript的最佳实践之一。现在这个函数遇到数组或对象元素时会正确抛出错误,应该能通过你的Jasmine测试。
内容的提问来源于stack exchange,提问作者Jorge Mendez
相关产品推荐
相关产品推荐

