[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有什么区别?相关推荐

  1. JavaScript中的ReferenceError和TypeError两种错误的区别

    转自JavaScript中的ReferenceError和TypeError两种错误的区别 作为前端工作人员,在调试JavaScript程序的时候经常遇到两个错误:ReferenceError和Typ ...

  2. uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...

    理解:let变量的作用域只能在当前函数中 js中const,let,var的区别及作用域_lianzhang861的博客-CSDN博客​blog.csdn.net 全局作用域中,用 const 和 l ...

  3. JS中 let 和var的区别

    JS中let和var 的区别 简单介绍let var的常见变量提升 ES6可以用let定义块级作用域变量 let配合for循环的独特应用 let没有变量提升与暂时性死区 let变量不能重复声明 简单介 ...

  4. Node.js: exports 和 module.exports 的区别

    我理解的exports 和 module.exports 的区别,欢迎大家吐槽~ 为了更好的理解 exports 和 module.exports 的关系,我们先来补点 js 基础.示例: app.j ...

  5. js中parentNode和parentElement的区别和用法

    了解本篇的基础必须知道什么是节点,关于html dom节点知识点和节点类型的知识,分别看<js节点都有哪些类型?怎么判断是哪种节点类型?>和<js属性节点获取和移除>,下面直接 ...

  6. Js中的style,currentStyle,getComputedStyle()区别

    Js中的style,currentStyle,getComputedStyle()区别  样式表有三种方式: 1.内嵌样式(inline Style)-是写在Tag里面的,内嵌样式只对所有的Tag有效 ...

  7. js箭头函数和普通函数区别

    js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...

  8. js中的extend的用法及其JS中substring与substr的区别

    1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的. ...

  9. [js] json和对象有什么区别?

    [js] json和对象有什么区别? JSON 是对象,但对象不一定是 JSON.对象是由属性和属性值组成,也就是 KEY->VALUE 对. 对象中的 value 可以是任意的数据类型,包括函 ...

最新文章

  1. python123动物重量排序_python基本常识
  2. 热烈欢迎乔丹入驻博客园
  3. 设计模式16——Memento设计模式
  4. 封装一个流水号ID生成器:id-spring-boot-starter
  5. 这几天又看了Gosu,发现也是蛮有意思
  6. centos6实现kvm嵌套虚拟化
  7. POJ 1741tree-点分治入门
  8. 前端学习(2399):关于编辑代码编辑器
  9. plsql轻量版游标的使用2
  10. 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称...
  11. 仿高德地图点亮城市html,高德地图怎么点亮城市_高德地图点亮城市教程_3DM手游...
  12. 如何在WordPress中使用SEO写作助手来改善SEO
  13. ROS中NodeHandle nh与NodeHandle nh(“~“)区别
  14. Django新手十个开发指导
  15. 阴暗的底层阶级版罗密欧与朱丽叶——甲贺忍法帖
  16. 趣头条递交招股书 将冲刺移动内容聚合第一股
  17. MinIO InvalidEndpointException: invalid host问题解决
  18. ubuntu10.10下更新无线网卡驱动
  19. 微信小程序项目实例——体质计算器
  20. 爱因斯坦场方程之Reissner-Nordstrom(电磁真空)解

热门文章

  1. 大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业
  2. hbase配置详解(转)
  3. ActiveMQ queue 代码示例
  4. 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
  5. [bbk5307]第76集 第9章 -数据库性能维护 03
  6. 程序员需要知道的8个Linux命令
  7. 面试题整理(答案从网上找到后整理的)
  8. JQuery放大镜效果
  9. Solaris10 JumpStart服务器配置
  10. sql 中优化视图或sql语句的执行效率的方法