js数据类型

2025年5月27日 Mr 焦 220

数据类型

JavaScript 是一种 弱类型语言 或者说 动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

这也意味着你可以使用同个相同名称的变量保存不同类型的数据:

<p>var foo = 42;</p><p>// foo is a Number now</p><p>
</p><p>var foo = 'bar';</p><p>// foo is a String now</p><p>
</p><p>var foo = true;</p><p>// foo is a Boolean now</p>

💡 ECMAScript 标准定义了原始数据类型引用数据类型,共七种内置类型:

原始数据类型(基本类型):按值访问,可以操作保存在变量中实际的值。空值(null)未定义(undefined)布尔值(boolean)数字(number)字符串(string)符号(symbol)
引用类型(复杂数据类型):引用类型的值是保存在内存中的对象。对象(Object)布尔对象(Boolean)数字对象(Number)字符串对象(String)函数对象(Function)数组对象(Array)日期对象(Date)正则对象(RegExp)错误对象(Error)

⚠️ 注意: 与其他语言不同的是,JavaScript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。所以引用类型的值是按引用访问的。

原始数据类型

空值

空值 null 是一个字面量,它不像 undefined 是全局对象的一个属性。

null 是表示缺少的标识,指示变量未指向任何对象。把 null 作为尚未创建的对象,也许更好理解。

🌰 代码示例

foo 不存在,它从来没有被定义过或者是初始化过。

<p>foo;</p><p>> "ReferenceError: foo is not defined"</p>

foo 现在已经是知存在的,但是它没有类型或者是值。

<p>var foo = null;</p><p>foo;</p><p>> null</p>

未定义值

未定义值 undefined 是全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined 的最初值就是原始数据类型 undefined

<p>var foo;</p><p>
</p><p>console.log(foo);</p><p>// undefined</p>

布尔值

布尔类型表示一个逻辑实体,可以有两个值:truefalse

数字

进制数

十进制:JavaScript 中默认的进制数八进制:第一位必须是 0,然后是 0-7 的数字组成十六进制:前两位必须是 0x,然后是 0-9 及 A-F(字母不区分大小写)

<p>// 十进制</p><p>var num1 = 10;</p><p>
</p><p>// 八进制的56</p><p>var num2 = 070;</p><p>
</p><p>// 十进制,因为有数字超过了7,这里是79</p><p>var num3 = 079;</p><p>
</p><p>// 十六进制的31</p><p>var num4 = 0x1f;</p>

⚠️ 注意: 八进制在严格模式下 "use strict" 是无效的,会导致 JavaScript 报错,避免使用。

浮点数

<p>var num = 0.1 + 0.2;</p><p>var sum = '2.3' * 100;</p><p>
</p><p>console.log(num);</p><p>// 0.30000000000000000004</p><p>
</p><p>console.log(sum);</p><p>// 229.99999999999997</p>

上面例子表达的就是 JavaScript 的浮点型数据在计算时容易丢失精度,这一点并不仅在 JavaScript 存在,建议处理这方面问题使用专用的数字处理类,比如 Java 里的 BigDecima 类来处理。

数字的范围

JavaScript 中数值的范围是有效位数的,基本上够我们使用,我们仅需要知道以下几个知识点:

Number.MIN_VALUENumber.NEGATIVE_INFINITY:表示 JavaScript 中的最小值Number.MAX_VALUENumber.POSITIVE_INFINITY:表示 JavaScript 中的最大值Infinity:表示无穷大-Infinity:表示无穷小

NaN

NaN (Not a number)的含义是本该返回数值的操作未返回数值,返回了 NaN 就不会抛出异常影响语句流畅性。

NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。

在现代浏览器中(ES5 环境), NaN 属性是一个不可配置(non-configurable)、不可写(non-writable)的属性。但在 ES3 中,这个属性的值是可以被更改的,但是也应该避免覆盖。

编码中很少直接使用到 NaN。通常都是在计算失败时,作为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt("blabla"))。

字符串

JavaScript 的字符串类型用于表示文本数据。它是一组 16 位的无符号整数值的元素。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为 0,下一个是索引 1,依此类推。字符串的长度是它的元素的数量。

<p>'foo';</p><p>'bar';</p><p>'1234';</p><p>'one line \n another line';</p><p>"John's cat";</p>

符号

符号(Symbols)是 ECMAScript 第 6 版新定义的。该类型的性质在于这个类型的值可以用来创建匿名的对象属性。该数据类型通常被用作一个对象属性的键值,当这个属性是用于类或对象类型的内部使用的时候。

<p>var myPrivateMethod = Symbol();</p><p>
</p><p>this[myPrivateMethod] = function () {</p><p>  // ...</p><p>};</p>

引用数据类型

引用类型通常叫做类(Class),也就是说,遇到引用值,所处理的就是对象。

在 ECMA-262 标准中根本没有出现 这个词,而是定义了 对象定义,逻辑上等价于其他程序设计语言中的类。

对象是由 new 运算符加上要实例化的对象的名字创建的。

例如,下面的代码创建 Object 对象的实例:

<p>var o = new Object();</p>

这种语法与 Java 语言的相似,不过当有不止一个参数时,ECMAScript 要求使用括号。

如果没有参数,如以下代码所示,括号可以省略:

<p>var o = new Object();</p>

尽管括号不是必需的,但是为了避免混乱,最好使用括号。


参考资料

📖 Symbol 术语表📖 Global Objects

分类:
标签:
版权属于Mr 焦
本文链接:https://www.mtsws.cn/post-5.html
评论
暂无评论数据
相关推荐
React概述
一、React概述 1.1、前端三大主流框架 Angular.js:出来较早的前端框架,学习曲线比较陡,NG1学起来比较麻烦,NG2 ~ NG5开始,进行了一系列的改革,也提供了组件化开发的概念;从NG2开始,也支持使用TS(TypeScript)进行编程; Vue.js:最火(关注的人比较多)的一门前端框架,它是中国人开发的,对我我们来说,文档要友好一些;...
Mr 焦 1492025年5月27日 react
js 基础语法
ECMAScript 源码文本会被从左到右扫描,并被转换为一系列的输入元素,包括标识符、控制符、行终止符、注释和空白符。 同样地,ECMAScript 也定义了一些关键字、字面量以及行尾分号补全的规则。 字符集 JavaScript 程序使用 Unicode 字符集编写。Unicode 是 ASCII 和 Latin-1 的超集,并支持地球上几乎所有在使用的...
Mr 焦 2072025年5月27日 js
Sequelize 在 Node.js 中的详细用法与使用笔记
Sequelize 在 Node.js 中的详细用法与使用笔记 1. Sequelize 简介 Sequelize 是一个基于 Promise 的 Node.js ORM (Object-Relational Mapping) 工具,支持 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server 等多种数据...
Mr 焦 3642025年6月8日
Expo Router的核心用法汇总
以下是 Expo Router 的核心用法汇总,涵盖路由配置、导航、参数传递等关键功能(基于 Expo SDK 49+): 🗺️ 路由配置(文件系统路由) app/ ├── (tabs)/ # 嵌套布局组 │ ├── index.js # /tabs/ │ └── [user].js # /tabs/{user} ├─...
Mr 焦 2462025年5月30日 react native
浏览器架构
浏览器架构 计算机核心元素 为了了解浏览器运行的环境,我们需要了解几个计算机部件以及它们的作用。 CPU 第一个需要了解的计算机部件是 中央处理器(Central Processing Unit),或简称为 CPU。CPU 可以看作是计算机的大脑。一个 CPU 核心如图中的办公人员,可以逐一解决很多不同任务。它可以在解决从数学到艺术一切任务的同时还知道如何响...
Mr 焦 2432025年5月27日