1. 首页

JS 笔记 — JavaScript 中 6 – 8 种左右的语言类型

JavasSript 很奇怪,目前在 JavasSript 中存在八种(近似)ECMAScript 语言类型(在本文发表时)。我们倾向于说 JavasSript 中的所有内容都是一个对象,但事实并非如此。实际上, 虽然在 JavasSript 中大多数东西表现得像对象,但这并不意味着它们真的是对象。因此,深入研究 JavasSript 中存在的有效类型是一件以备不时之需的好事情。

在继续之前,我想说清楚:我指的是 一般值类型 ,而不是 基本类型 的概念。如果我指的是基本类型,那么就不会讨论对象,那是需要再找一天讨论的另一种不同的 JS 问题。

那么现在,为了深入这 8 种左右的类型以及 “近似” 意义的本质,我们需要一位有帮助的朋友的指导……

A drawing of a bunny wearing an eyepatch, and a beret.

来见见 BUNNSBOS!

BUNNSBOS 将帮助我们理解这些类型,如下:

  • Boolean

  • Undefined

  • Number

  • Null (近似)

  • String

  • BigInt (非官方的)

  • Object

  • Symbol

  • Js中文网 – 前端进阶资源教程 https://www.javascriptc.com

你可能会质疑是否还有其他类型没有列出。这就是短语 “表现得像对象” 所指的 — 如数组或函数等等。正如我朋友所说的那样,这些可以归类为 “奢侈对象”,值得专门用一篇文章来介绍。这里我只关注 ECMAScript 规范中已识别的类型。 😬

那么,让我们来快速过一遍这八个独特可爱的孩子。警告: 以下将是极其简化的定义。

  • Boolean:只能输出 true 或 false 值。

  • Undefined:缺省值;(或者在变量的情况下)当前没有值的变量容器。

  • Number:可以对其运行数学运算的值(使用浮点格式)。

  • Null:把这看作是另一种故意写“这里什么都没有”的方式,它与零或空不一样。 😬😬😬

  • String:只是简单的文本。

  • BigInt:一个非常大的数字系统。可以达到计算机中可分配的内存的最大容量。

  • Object:一个数据容器。

  • Symbol:可以动态生成匿名唯一值的函数。

现在我知道你在想,“ 难道 BUNNSSOB 不是比 BUNNSBOS 更有意义吗?这个缩略词中没有两个S分成两个单词”。— 我会说,“是的,但是,看看那可爱的贝雷帽!”

所以我们非常粗略地定义了八种类型。我想开始分析这些类型的奇怪部分 — 主要是 BigIntNull。我们从简单的开始:BigInt

BigInt 是 JavaScript 中的一种有效类型,或者更恰当地说,它存在于 Node 和 Chrome 的 V8 JavaScript 引擎以及 Firefox 的SpiderMonkey 引擎中。BigInt 之所以奇怪,是因为它可以被使用和测试,但并不属于 ECMAScript 规范 的正式部分。因此,使用并查询它是有效的,但它不是规范的正式部分。注意:根据 Node 或浏览器的版本,您可能无法测试 BigInt,这就加强了在该类型上使用星号的必要性。


> typeof 143 'number' > typeof 143n 'bigint'

现在来看超级怪异的一个:Null。可以在 if 语句中检查 null,但是测试null类型会得到各种各样的结果。


> typeof null 'object'

引用前端开发大牛 Ire Aderinokun 的话来说:

在 JavaScript 的第一个实现中,值由两部分表示:类型标记和实际值。有5个类型标记可使用,而用于引用对象的标记是 0 。但是,Null 被表示为空指针,对于大多数平台来说是 0x00 。由于这种相似性,null 就有了对应于一个对象的 0 类型标记。

不幸的是,更重要的一点是 Null 输出的类型是 Object 是一个 bug。一个我们必须忍受的 bug,以免如果我们决定修复它的话,从社会的角度讲,我们就会很轻易地破坏太多的应用和网站。

所以我们现在背上了 Null 的十字架 — 带着这个十字架,我们必须面对这样一个事实,我们至少可以检查 BigInt 的类型,但是不能检查 Null 的类型。我们的新朋友,BUNNSBOS 死了,BUNSBOS 万岁。

A drawing of a butt wearing an eyepatch, and a beret.

  • Boolean

  • Undefined

  • Number

  • String

  • BigInt (非官方的)

  • Object

  • Symbol

Js中文网 – 前端进阶资源教程 www.javascriptC.com,typescript 中文文档
一个帮助开发者成长的社区,你想要的,在这里都能找到

现在,我们为小圆面包(BUNS) 哭泣(SOB)。

😭


引用资源:

作者:Lara
链接:https://www.zcfy.cc/article/js-minute-the-6-8ish-language-types-in-javascript

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

标题:JS 笔记 — JavaScript 中 6 – 8 种左右的语言类型

链接:https://www.javascriptc.com/3131.html

« JavaScript 引擎基本原理:Shapes 和 Inline Caches
时隔一日,Nginx 之父已被释放»
Flutter 中文教程资源

相关推荐

QR code