重新回顾JS的笔记系列(二)

重新回顾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 类型仅包含两个值:truefalse

这种类型通常用于存储表示 yes 或 no 的值:true 意味着 “yes,正确”,false 意味着 “no。

例子:

let isGreater = 4 > 1;

alert( isGreater ); // true(比较的结果是 "yes")
  • null值

特殊的 null 值不属于上述任何一种类型,它构成了一个独立的类型,只包含 null 值。

相比较于其他编程语言,JavaScript 中的 null 不是一个“对不存在的 object 的引用”或者 “null 指针”。

JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值。

  • undefined值

特殊值 undefinednull 一样自成类型。

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、空字符串、nullundefinedNaN)将变为 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