一开始遇到这些error,我也很懵,不知道如何去查找我的错误。我对这三点做出以下总结
SyntaxError 经常在给eval()传入的字符串包含js语法错误时发生。在eval()外部很少会用到SyntaxError 。这是因为js代码中的语法错误会导致代码无法执行。
ReferenceError是和作用域查找相关,这种错误经常是由访问不存在的变量而导致的。(没有给变量声明)
TypeError是查找作用域成功,但是对变量的操作非法或者错误所生成,即变量不是预期类型,或者访问不存在的方法时。尤其是在使用类型特定的操作而变量类型不对时。
后面再一点补充:
假如查找不到变量。LHS在非严格模式下找不到变量会自动生成全局变量,但是在严格模式会和RHS一样ReferenceError的错误。
假如能查找到变量,对其进行非法或者不正确的操作都会报TypeError的错误