ReferenceError
當(dāng)你嘗試引用一個(gè)未被定義的變量時(shí),將會(huì)拋出一個(gè) ReferenceError
console.log(a); // ReferenceError: a is not defined
TypeError
當(dāng)傳入函數(shù)的操作數(shù)或參數(shù)的類型并非操作符或函數(shù)所預(yù)期的類型時(shí),將拋出一個(gè) TypeError 類型錯(cuò)誤。
let b
console.log(b.name); // TypeError: Cannot read property 'name' of undefined
RangeError
當(dāng)一個(gè)值不在其所允許的范圍或者集合中。
例: 使用 toFixed 方法格式化小數(shù)點(diǎn)后數(shù)字的個(gè)數(shù)時(shí),設(shè)置的數(shù)值過大火過小。
(5).toFixed(2); // 5.00
(5).toFixed(101); // RangeError: toFixed() digits argument must be between 0 and 100
或者
例:回調(diào)函數(shù)無限次回調(diào)
function fn(){
fn()
}
fn() // RangeError: Maximum call stack size exceeded
SyntaxError
語法錯(cuò)誤(一般語法錯(cuò)誤編譯器本身就會(huì)有報(bào)錯(cuò)提示)
const a = , // SyntaxError: Unexpected token ','