一、常见错误及相应示例说明
1、TypeError 类型错误:
var?num?=?666;
num();
//?Uncaught?TypeError:?num?is?not?a?function
解决方法:确保你对值的操作和使用是符合其类型的。
2、ReferenceError 引用错误:
console.log(foo);
//?Uncaught?ReferenceError:?foo?is?not?defined
解决方法:确保你在使用变量或函数之前进行了正确的声明和定义。
3、SyntaxError 语法错误:
if?(x?>?5?{?//?缺少右括号
console.log('x?is?greater?than?5');
}
//??Uncaught?SyntaxError:?Unexpected?token?'{'
解决方法:仔细检查代码,确保语法正确,例如括号匹配、分号使用等。
4、RangeError 范围错误:
function?recursiveFunction()?{
recursiveFunction();
}
recursiveFunction();
//??Uncaught?RangeError:?Maximum?call?stack?size?exceeded
解决方法:确保你在访问数组、字符串或其他可迭代对象时,使用的索引或位置在有效范围内。
function?recursiveFunction(depth)?{
if?(depth?===?0)?{
return;
}
recursiveFunction(depth?-?1);
}
recursiveFunction(100);
//?在这个示例中,我们通过增加一个停止条件来修复范围错误。递归的深度被限制在100次。
5、EvalError eval 函数错误:
在JavaScript中,EvalError是一个错误类型,表示与eval()函数相关的错误。然而,在现代的JavaScript环境中,EvalError的使用相对较少。 示例:
eval('alert("Hello,?World!");');
//?我们使用eval()函数来执行一个字符串作为JavaScript代码。如果字符串中的代码存在语法错误或其他问题,就会抛出EvalError。
解决方法:避免使用 eval 函数,尽量使用其他更安全的替代方法。例如使用Function构造函数或解析器工具等。
6、URIError URI 错误:
decodeURIComponent('%');
//?Uncaught?URIError:?URI?malformed
解决方法:确保你在使用 URI 相关函数或方法时,提供的参数是合法的。
7、InternalError 内部错误:
function?createHugeArray()?{
var?arr?=?new?Array(2000000000);
return?arr;
}
createHugeArray()
解决方法:InternalError通常是由于JavaScript引擎或运行时环境中的内部问题导致的,例如堆栈溢出、内存不足等。避免出现无限递归、死循环等问题,确保你的代码逻辑正确。
8、AsyncError 异步错误:
async?function?fetchData()?{
throw?new?Error('Something?went?wrong');?//?抛出一个错误
}
fetchData()
.catch(error?=>?{
console.log('Async?error:',?error);?//?捕获异步错误并进行处理
});
解决方法:使用适当的错误处理机制,例如使用 try-catch 或 catch 方法来捕获和处理异步错误。
async?function?fetchData()?{
try?{
throw?new?Error('Something?went?wrong');?//?抛出一个错误
}?catch?(error)?{
console.log('Sync?error:',?error);?//?捕获同步错误并进行处理
}}
fetchData()
.catch(error?=>?{
console.log('Async?error:',?error);?//?捕获异步错误并进行处理
});
领取专属 10元无门槛券
私享最新 技术干货