查漏补缺

在 JS 中,存在着 6 种原始值,分别是:

  • boolean
  • null
  • undefined
  • number
  • string
  • symbol

首先原始类型存储的都是值,是没有函数可以调用的,比如 undefined.toString()

此时你肯定会有疑问,这不对呀,明明 '1'.toString() 是可以使用的。其实在这种情况下,'1' 已经不是原始类型了,而是被强制转换成了 String 类型也就是对象类型,所以可以调用 toString 函数。

除了会在必要的情况下强转类型以外,原始类型还有一些坑。

其中 JS 的 number 类型是浮点类型的,在使用中会遇到某些 Bug,比如 0.1 + 0.2 !== 0.3,但是这一块的内容会在进阶部分讲到。string 类型是不可变的,无论你在 string 类型上调用何种方法,都不会对值有改变。

另外对于 null 来说,很多人会认为他是个对象类型,其实这是错误的。虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来。

原始(Primitive)类型相关推荐

  1. Java中的原始类型与原始封装类型

    在写Java代码的过程中,一直对Java提供的一些类参数又疑问,今天查了一下,进行了解学习. type argument cannot be of primitive type 问题: Java中什么 ...

  2. 《JavaScript面向对象精要》——1.8 原始封装类型

    本节书摘来自异步社区<JavaScript面向对象精要>一书中的第1章,第1.8节,作者:[美]Nicholas C. Zakas 译者: 胡世杰 更多章节内容可以访问云栖社区" ...

  3. java 中的原始类型与原始封装类型

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型) 文章目录 一.原始与对应的封装类 二.引用类型和原始类型的区别: 三.总结: 比如: Int是java的原始数据类型,Integer是j ...

  4. pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...

    在利用pandas处理表格时,往往有时我们用表格做的测试用例往往会设计考一些必填项*故意赋值为空(代表不输入)的测试用例, 比如说我们的手机号.身份证号码.社会统一信用代码等都是数字型字符串.如下所示 ...

  5. java构建学生对象布尔类型,Java如何将原始布尔类型转换为布尔对象?

    下面的代码片段演示了如何使用该Boolean.valueOf()方法将原始boolean值或字符串转换为Boolean对象.此方法将返回Boolean给定原始boolean值的相应对象. 当将字符串值 ...

  6. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)

    第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...

  7. 【JavaScript】9.基本引用类型-原始值包装类型

    本篇笔记示例代码仓库:https://github.com/zhangtuo1999/study-js . 本篇笔记遵循中文技术文档的写作规范. 主要内容来源于<JavaScript高级程序设计 ...

  8. JS 原始值包装类型

    为了方便操作原始值,ECMAScript 提供了 3 种特殊的引用类型:Boolean.Number 和 String.每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包装类型的对象,从而暴 ...

  9. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别) 发布于 2020-4-19| 复制链接 摘记: int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Int ...

  10. JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...

最新文章

  1. 你训练的神经网络不对头的37个原因
  2. tensorflow随笔-tf.no_op
  3. 自动登录ssh不需要输入密码
  4. ansible(自动化运维中)——ansible常用模块
  5. phpcms二层栏目下拉和当前栏目高亮
  6. 浮动元素具有行内块元素特点(HTML、CSS)
  7. Java 中时间处理SimpleDateFormat 中HH和hh的区别
  8. C++ 中使用引用类型的成员变量
  9. 计算机一级电子照怎么做,证件照电子版怎么弄-简单5步,教您随心所欲做证件照...
  10. 网吧服务器维护工具,某某网吧专用维护工具(网吧维护管理助手)V5.1 最新版
  11. VBA_自定义对数函数
  12. R语言使用ltm包计算cronbach‘s alpha(克朗巴哈系数法)实战:cronbach alpha(克朗巴哈系数法)是一种测量问卷或调查内部一致性的方法、cronbach‘s alpha解读
  13. Debian 7 安装metasploit
  14. Invalid bound statement (not found): com.example.wyl.mapper.PeijianDAO.selectList异常错误
  15. APP被应用商店下架了怎么办?
  16. 浏览器火狐3.0发布之盛况
  17. App Store拒绝原因
  18. 领英工程VP:如何用 AI 消除 AI 偏见,打造高级人才推荐系统
  19. 使用matplotlib制作“饼图”:pyplot.pie(X,autopct,labels,explode)
  20. MATLAB矩阵每行按降序排列,每列升序并记录行号

热门文章

  1. ArcGIS三维网络分析
  2. K8s9(2-1) k8s中的通信机制, kube-proxy的ipvs模式 ,无头服务,LoadBalancer,ExternalName,外部公有 ip(externalIPs)
  3. 2022年人工智能行业研究报告
  4. 基于人类视觉系统建模的仿生低层次图像处理
  5. linux桌面系统 9,红旗Linux系统RedFlag Linux Desktop 9.0安装教程
  6. Springboot中new出来的实例中含有@Autowired注入时的Spring Bean为NULL
  7. 上班族如何提高“非工资收入”?跟清北大咖零基础学理财
  8. 自定义控件其实很简单 二
  9. 关于主从延迟,一篇文章给你讲明白了!(转)
  10. wikioi 1550 不明飞行物