前言
本文参考教程:现代 JavaScript 教程
本章节对应教程中 第一部分 JavaScript 编程语言 – JavaScript 基础知识 – 2.4 变量 至 2.5 数据类型
其中插入 第一部分 JavaScript 编程语言 – 杂项 – 14.5 BigInt
本人所使用开发软件:Visual Studio Code
变量和常量
创建变量
在 JavaScript 中创建变量的话,使用的是let
关键字,比如我创建了一个变量,就是这样写的:
let a; // 这就算是创建好了一个变量,名称为 a
那么变量创建完成之后,我们就可以为变量进行赋值,比如这样:
let a;
a = 1;
// 可以将变量声明和变量赋值整合在一行中,像这样:
let a = 1;
// 创建好了一个变量,并给这个变量赋值数字1
可以在一行之中声明多个变量,比如这样:
let a = 1, b = 2, c = 3;
// 但是为了更好的知道创建变量的具体情况,也就是代码的可读性,最好还是一行只声明一个变量,像这样:
let a = 1;
let b = 2;
let c = 3;
那么,如果要对变量的值进行改变的话,重新赋值即可,类似这样:
let a; // 创建了一个变量a
a = 1; // 此时的变量a的值是1
a = 2; // 此时的变量a的值发生改变,从1更改为了2
// 在此过程中,请注意,不要多次声明同一个变量,这样会导致你的代码出错
教程原文中介绍了旧版本创建变量的方式,即使用
var
关键字,这里不做介绍。整体结束之后会单独介绍旧版本的某些关键字
变量命名
像上文中的 a,就是给变量的一个名称,我们创建了一个 a 变量,就是一个再给变量命名的过程。
在 JavaScript 中,给变量命名有两个限制:
- 变量名称必须仅包含字母、数字符号 $ 和下划线 _
- 首字母必须是非数字
- 如果包含多个单词的情况下,一般使用驼峰式命名方法,也就是单词连着写,除了第一个单词之外,剩余每个单词的第一个字母都需要大写,就像是这样:
let a; // 定义变量 a,这种命名方式是有效的
let a1; // 定义变量a1,这种命名方式是有效的
let variableName; // 驼峰式命名法示例
let 1; // 这种命名方式是错误的,不允许以数字开始
let var-name; // 这种命名方式是错误的,不允许使用连字符 -
// 请注意
// 1. 区分大小写,也就是说,A 变量和 a 变量是不一样的。
// 2. 在JavaScript中,允许非英文字母创建变量,但是不建议。
// 3. 有一张保留字列表,在保留字列表中的内容已经被用作编程语言本身,无法用作变量命名,如 let 、class 、return 等。
// 4. 在教程中,有一个未采用 use strict 情况下的赋值,讲述在这种情况下可以通过赋值的方式创建变量,此处不做阐述。
创建常量
使用const
关键字来创建一个常量,它不能被修改,也就是说,这个值是不变的,如果更改变量,会触发报错:
const pai = 3.14; // 声明一个 pai 常量
let pai = 3.1415; // 会触发报错
常量可以用来记录那些我们很难记住的值,并且确认后续无法被修改,那么这个时候我们可以使用大写和下划线来命名这些变量,并且很容易记住这些值,并在后续很容易被使用。
那么变量如何命名?变量需要有一个清晰、明确的含义来对它所包含的数据进行描述,并且需要足够简洁。
如果你拥有一个团队,那么你还需要将你的变量术语和团队保持一致。
在教程最后,有一个问题:重复使用一个变量还是新建变量?
新建一个变量绝对会比重复使用导致代码出错而浪费大量的时间绝对要好很多。
数据类型
在 JavaScript 中,含有8中基本的数据类型,七种原始类型和一种引用类型。
Number 类型
整数和浮点数
除此之外,还有一些特殊数值:
Infinity
代表无穷大,同样的,-Infinity
代表无穷小。NaN
代表计算错误,它代表不正确或者是一个未定义的数学操作。并且,如果你在 JavaScript 脚本中有一长串的计算,那么只要其中的某个环节出现NaN
,那么之后的所有运算都依旧是NaN
。PS:NaN ** 0
结果为 1。
特殊的数值属于 “number” 类型。当然,对“特殊的数值”这个词的一般认识是,它们并不是数字。
后续在数字类型中会有介绍。
BigInt 类型
在 JavaScript 中,Number
类型无法表示大于 (253-1),或小于 -(253-1) 的整数。这是其内部表示形式导致的技术限制(即 9007199254740991)。
所以我们需要一个类型来表示任意长度的数字,这个就是 BigInt
类型。
创建的方式有两种:
const bigint = 1234567890123456789012345678901234567890n; // 在整数字面量后面加 n
const sameBigint = BigInt("1234567890123456789012345678901234567890"); // 调用调用 BigInt 函数
需要注意的是,该类型由于是新加入到 Javascript 中的,所以会有兼容性问题
此分隔线中内容来自 第一部分 JavaScript 编程语言 – 杂项 – 14.5 BigInt
一、数学运算符
- 多数情况下可以像常规数字类型一样使用。
-
不可以与常规数字类型混用,在需要的情况下,应该显式的使用
Number()
或者BigInt()
转换,如果 bigint 太大而数字类型无法容纳,则会截断多余的位。且不支持一元加法。> **显式转换** 与 **隐式转换** : > > **显式转换**:就是需要使用构造函数,手动转换值的类型。 > > 但是在 **显式转换** 的情况下,你可能会遇到精度丢失的情况,并非是四舍五入,而是直接丢失。 > > **隐式转换**:就是系统默认的、不需要加以声明就可以进行转换。
- 可以使用比较运算符对
bigint
和number
类型的数字进行比较,但是,由于它们是不同类型的,所以可能会在==
比较时相等,但在进行===
(严格相等)比较时不相等。 - 在布尔运算中,处理
bigint
的方式类似于number
。 - Polyfill 不做阐述。
String 类型
字符串必须被括在引号中来进行使用,在 JavaScript 中,包含有三种方式来使用字符串:
- 双引号:“Hello”
- 单引号:‘Hello’
- 反引号:`Hello`
前两者是简单引用,基本没有区别,但是第三个反引号是 功能拓展 引号,我们可以使用 ${…}
将变量和表达式内嵌到字符串当中。
一个字符串可以包含零个(为空)、一个或多个字符。
let message = "字符串"; // 字符串类型的变量
// 嵌入变量
alert(`在${messsage}中嵌入一个变量`);
Boolean 类型(逻辑类型)
又称布尔类型,该类型仅包含两个值:true
和 false
,它可以作为比较的结果。
“null” 值
在 JavaScript 中,特殊的 null
值不属于上述任何一种类型,它构成了一个独立的类型,只包含 null
值,且仅仅是一个代表“无”、“空”或“值未知”的特殊值。
“undefined” 值
在 JavaScript 中,特殊值 undefined 和 null 一样自成类型,它的含义是:未被赋值。
如果一个变量已被声明,但未被赋值,那么它的值就是 undefined。
object 类型和 symbol 类型
在前期较为复杂,后续会提。
typeof 运算符
typeof
运算符返回参数的类型。
typeof x
的调用会以字符串的形式返回数据类型。
typeof(x)
语法你可能还会遇到另一种语法:
typeof(x)
。它与typeof x
相同。简单点说:
typeof
是一个操作符,不是一个函数。这里的括号不是typeof
的一部分。它是数学运算分组的括号。通常,这样的括号里包含的是一个数学表达式,例如
(2 + 2)
,但这里它只包含一个参数(x)
。从语法上讲,它们允许在typeof
运算符和其参数之间不打空格,有些人喜欢这样的风格。有些人更喜欢用
typeof(x)
,尽管typeof x
语法更为常见。
本文转自: https://quest.myxxts.club/archives/144/
本站仅做收录,版权归原作者所有。