重新回顾JS的笔记系列(二)
1.数据类型
在 JavaScript
中有 8 种基本的数据类型(译注:7 种原始类型和 1 种引用类型)
- Number类型
number 类型代表整数和浮点数。
数字可以有很多操作,比如,乘法 *
、除法 /
、加法 +
、减法 -
。
以及Infinity
(无穷大)、-Infinity
(无穷小)和 NaN
(代表一个计算错误)。
- BigInt类型
在 JS 中,“number” 类型无法安全地表示大于 (2^53-1)
(即 9007199254740991
),或小于 -(2^53-1)
的整数。所有大于 (2^53-1)
的奇数都不能用 “number” 类型存储。
BigInt
类型是最近被添加到 JavaScript 语言中的,用于表示任意长度的整数。
可以通过将 n
附加到整数字段的末尾来创建 BigInt
值。
例子:
// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 1234567890123456789012345678901234567890n;
- String类型
在JS当中被用来表示字符串。
在JS当中有三种包含字符串的方式
let name1 = "John";
let name2 = 'John'; //单引号和双引号没有什么太大的差别
//反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中。
//例如:
let name = "John";
// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!
// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3
//需要注意的是,这仅仅在反引号内有效,其他引号不允许这种嵌入。
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2}(使用双引号则不会计算 ${…} 中的内容)
- Boolean类型
boolean 类型仅包含两个值:true
和 false
。
这种类型通常用于存储表示 yes 或 no 的值:true
意味着 “yes,正确”,false
意味着 “no。
例子:
let isGreater = 4 > 1;
alert( isGreater ); // true(比较的结果是 "yes")
- null值
特殊的 null
值不属于上述任何一种类型,它构成了一个独立的类型,只包含 null
值。
相比较于其他编程语言,JavaScript 中的 null
不是一个“对不存在的 object
的引用”或者 “null 指针”。
JavaScript 中的 null
仅仅是一个代表“无”、“空”或“值未知”的特殊值。
- undefined值
特殊值 undefined
和 null
一样自成类型。
undefined
的含义是 未被赋值
。
如果一个变量已被声明,但未被赋值,那么它的值就是 undefined
let age;
alert(age); // 弹出 "undefined"
- Object类型/Symbol类型
之后会详细描述
object
类型是一个特殊的类型,用于储存数据集合和更复杂的实体。
symbol
类型用于创建对象的唯一标识符。
- typeof运算符
typeof
运算符返回参数的类型。
对 typeof x
的调用会以字符串的形式返回数据类型:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2) 注意此处是一个官方承认的错误
typeof alert // "function" (3)
2.基本交互
- alert
效果:在触发了某些条件之后,会出现一个弹窗,并且存在一个按钮等待用户按下
格式:
alert("Hello");
- Prompt
效果:浏览器会出现一个带输入框的弹窗,以及一个确认键
result = prompt(title, [default]);//title 显示给用户的文本 default 可选的第二个参数,指定 input 框的初始值。
- confirm
效果:confirm
函数显示一个带有 question
以及确定和取消两个按钮的模态窗口。
点击确定返回 true
,点击取消返回 false
。
let isBoss = confirm("Are you the boss?");
alert( isBoss ); // 如果“确定”按钮被按下,则显示 true
3.类型转换
在上文当中提到了几种数据类型,在某些场合之下我们需要将一种数据类型转化为另外一种类型,此时需要的技术就是 类型转换。
基本存在三种类型的转换:
- 字符串转换
通常有两种方法,就是 alert()
,或者使用 String()
例子:
let value = true;
alert(typeof value); // boolean
value = String(value); // 现在,值是一个字符串形式的 "true"
alert(typeof value); // string
- 数字型转换
通常使用/
来用于非number类型,或者Number()
alert( "6" / "2" ); // 3, string 类型的值被自动转换成 number 类型后进行计算
let str = "123";
alert(typeof str); // string
let num = Number(str); // 变成 number 类型 123
alert(typeof num); // number
注意,Number()
存在转换的规则,具体如下:
值 | 转换为 |
---|---|
undefined | NaN |
null | 0 |
true 和 false | 1 and 0 |
string | 去掉首尾空白字符(空格、换行符 \n 、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0 。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN 。 |
具体示例:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
alert( Number(true) ); // 1
alert( Number(false) ); // 0
- 布尔型转换
转换规则:
[1] 直观上为“空”的值(如 0
、空字符串、null
、undefined
和 NaN
)将变为 false
。
[2] 其他值变成 true
。
具体示例:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
4.数学运算
Last modified on 2023-03-02