[js] ReferenceError和TypeError有什么区别?
生活随笔
收集整理的這篇文章主要介紹了
[js] ReferenceError和TypeError有什么区别?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[js] ReferenceError和TypeError有什么區別?
ReferenceError
指的是引用出錯,比如嘗試訪問未定義的變量,或者提前訪問無提升的變量,都會引發這個錯誤:
console.log(foo); // ReferenceError: foo is not defined let foo = 1;TypeError指的是類型出錯。
眾所周知JavaScript是一個弱類型的語言,這既是它的優點,也經常被人詬病。你永遠也不知道 a + b 是在做數值加減還是字符串拼接,而且似乎 a + b 幾乎從來也不會報錯。
而tc39自 ES5 到 ES6 以來,將 TypeError 的頻率幾乎翻了4倍之多。目的就是為了規范和強調類型這一概念,避免過于模糊類型這一概念導致JavaScript對于語義的不確定性。
Symbol() + 1; // TypeError: Cannot convert a Symbol value to a number({ toString: () =>({}) }) + 'a'; // TypeError: Cannot convert object to primitive value這樣使得JavaScript更為規范,當一個方法的參數需要一個 number 但卻收到了一個 object,與其讓它返回 NaN,不如果斷地拋出 TypeError 吧。
個人簡介
我是歌謠,歡迎和大家一起交流前后端知識。放棄很容易,
但堅持一定很酷。
主目錄
與歌謠一起通關前端面試題
總結
以上是生活随笔為你收集整理的[js] ReferenceError和TypeError有什么区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java计算器课程报告_java课程设计
- 下一篇: 数学建模十大常用软件(转)