# SyntaxError ReferenceError TypeError error
// for(adsf,asdf)//Uncaught SyntaxError 语法错误
// dfasdf//Uncaught ReferenceError 引用错误
//let a=3; a()//Uncaught TypeError不是预期类型时抛出
EvalError
创建一个error实例,表示错误的原因:与 eval() 有关。
InternalError
创建一个代表Javascript引擎内部错误的异常抛出的实例。 如: "递归太多".
RangeError
创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。
ReferenceError
创建一个error实例,表示错误的原因:无效引用。
SyntaxError
创建一个error实例,表示错误的原因:eval()在解析代码的过程中发生的语法错误。
TypeError
创建一个error实例,表示错误的原因:变量或参数不属于有效类型。
URIError
创建一个error实例,表示错误的原因:给 encodeURI()或decodeURl()传递的参数无效。
- 捕获异常 try...catch...
- 抛出异常,让下一级处理,throw error
- new Error(xxx)
- new TypeError(xxx)
- throw new TypeError(222)
//控制台出现“The script has an unsupported MIME type ('text/html')”报错
有时候开发React或者Vue项目时,本地运行访问时,会莫名出现报错如下:
The script has an unsupported MIME type ('text/html')
这是由于无意中开启了service Workesr 功能,只要关掉即可解决。
步骤:
开发者工具 -> Application -> service Workers -> 展开Service workers from other domains ->
找到localhost域名项 -> 在右侧Unrigister注销 -> 最后刷新之前的项目页面即可。
# cannot read property of undefined
cannot read property of undefined 是一个常见的错误,如果意外的得到了一个空对象或者空值,这样恼人的问题在所难免。
- 解决方案:
- && 短路运算符进行可访问性嗅探
- || 单元设置默认保底值
- try...catch
- ?.
- lodash get
const obj = {
user: {
posts: [
{ title: 'Foo', comments: [ 'Good one!', 'Interesting...' ] },
{ title: 'Bar', comments: [ 'Ok' ] },
{ title: 'Baz', comments: []}
],
comments: []
}
}
console.log(
obj.user &&
obj.user.posts &&
obj.user.posts[0] &&
obj.user.posts[0].comments
)
//[ 'Good one!', 'Interesting...' ]
console.log((((obj.user || {}).posts||{})[0]||{}).comments)//[ 'Good one!', 'Interesting...' ]
var result
try {
result = obj.user.posts[0].comments
console.log(result)
//['Good one!', 'Interesting...']
}
catch {
result = null
}
console.log(obj?.user?.posts[0]?.comments)// //['Good one!', 'Interesting...']
// lodash 等库 get API (可自己编写)
const get = (p, o) => p.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, o)
console.log(get(['user', 'posts', 0, 'comments'], obj))
// [ 'Good one!', 'Interesting...' ]
console.log(get(['user', 'post', 0, 'comments'], obj)) // null