javascript第一章(数据类型)
JavaScript 的数据类型分为 原始数据类型 和 引用数据类型 两大类:
- 原始数据类型(基本类型)
- Number:表示数值,包括整数和浮点数(如
3.14
),支持科学计数法(如3.14e2
)。特殊值包括NaN
(非数值)和Infinity
(无穷大)。 - String:表示文本数据,使用单引号(
'text'
)或双引号("text"
)包裹。字符串不可变。 - Boolean:表示逻辑值
true
或false
。 - Undefined:声明变量但未赋值时的状态。
- Null:表示空值或对象占位符。
- Symbol:ES6 引入的唯一标识符类型,用于确保对象属性的唯一性。
- 数据类型的判断方法
1. typeof 运算符:可判断原始类型的名称(如 "number"
、"string"
),但无法区分对象的具体类型(如 "object"
)。
一、数值类型(Number)
- 在JS中所有的整数和浮点数都是Number类型
- JS中的数值并不是无限大的,当数值超过一定范围后会显示近似值
- Infinity 是一个特殊的数值表示无穷
- 所以在JS中进行一些精度比较高的运算时要十分注意
- NaN 也是一个特殊的数值,表示非法的数值
数值划分
- 普通数字,包含浮点数据
- 大整数(BigInt)
- 其他进制的数字:
普通数字
let num = 10;
num = 10.5;
num = 3.14;
num = 9898989898989898989891111;// 特别大的数字 9.898989898989899e+24
num = 9999 ** 99999;// Infinity 无穷大
num = 1.22232111112321121231211;// 1.2223211111232113 丢失精读
num = 0.0000000000000000000000000000000000001;// 1e-37
num = 0.1 + 0.2;// 0.30000000000000004 近似值
num = 1 - "a";//NaN (Not a Number)
a = NaN;
大整数(BigInt)
-
大整数用来表示一些比较大的整数
-
大整数使用n结尾,它可以表示的数字范围是无限大
num = 99999999999999999999999999999999999999999999999999n;
其他进制数字
-
二进制 0b
-
八进制 0o
-
十六进制 0x
num = 0b1010; // 10
num = 0o10; // 8
num = 0xff; // 255
console.log(num)
二、类型检查
typeof 运算符
-
typeof用来检查不同的值的类型
-
它会根据不同的值返回不同的结果
演示
let num = 10;
let num1 = 1000n;
console.log(typeof num,num);//number 10
console.log(typeof num1,num1);//bigint 1000n
三、字符串类型(String)
字符串(String)
- 在JS中使用单引号或双引号来表示字符串
- 转义字符 \
- \ " --> "
- \ ’ --> ’
- \ \ --> \ \
- \ t --> 制表符
- \ n --> 换行
- 模板字符串
- 使用反单引号` 来表示模板字符串
- 模板字符串中可以嵌入变量
- 使用typeof检查一个字符串时会返回 “string”
双引号标识
let str = "你好";
//console.log(typeof str,str);//string 你好
转义字符
str = "hello";
str = '这是一个"字"';// 这是一个"字"
str = '这是一个"字\\\\'; // 这是一个"字\\
str = "呵呵\t哈哈哈"; // 呵呵 哈哈哈
str = "呵呵\n哈哈哈";// 呵呵
// 哈哈哈;
模板字符串
str = `今天是个好日子`;
// console.log(str);
// 模板字符串
let str1 = `今天是周三,${str}`;// 今天是周三,今天是个好日子
四、其他数据类型
- 布尔值(Boolean)
- 空值 (Null)
- 未定义(Undefined)
- 符号(Symbol)
JS中原始值一共有七种
1.Number
2.BigInt
3.String
4.Boolean
5.Null
6.Undefined
7.Symbol
七种原始值是构成各种数据的基石
原始值在JS中是不可变类型,一旦创建就不能修改
布尔值(Boolean)
- 布尔值主要用来进行逻辑判断
- 布尔值只有两个true 和 false
- 使用typeof检查一个布尔值时会返回 “boolean”
演示
let bool = true;//真 --》 boolean true
bool = false;// 假 --》 boolean false
console.log(typeof bool,bool)
空值 (Null)
- 空值用来表示空对象
- 空值只有一个 null
- 使用typeof检查一个空值时会返回"object"
- 使用typeof无法检查空值
演示
let a = null;
console.log(typeof a,a);// object null 类型判断不了是否为空
未定义(Undefined)
- 当声明一个变量而没有赋值时,它的值就是Undefined
- Undefined类型的值只有一个就是 undefined
- 使用typeof检查一个Undefined类型的值时,会返回 “undefined”
演示
let b;
console.log(typeof b,b)//undefined undefined 未定义
符号(Symbol)
- 用来创建一个唯一的标识
- 使用typeof检查符号时会返回 “symbol”
演示
let c = Symbol();
console.log(typeof c,c)//symbol Symbol()
五、类型转换
类型转换指将一种数据类型转换为其他类型将其他类型转换为(字符串、数值和布尔值)
- 类型转换-字符串
- 类型转换-数值
- 类型转换-布尔值
5.1 类型转换-字符串
- 调用toString()方法将其他类型转换为字符串
- 调用String()函数将其他类型转换为字符串
toString
- 调用xxx的yyy方法
- xxx.yyy()
- 由于null和undefined中没有toString()所以对这两个值调用toString()时会报错
演示
// 数字类型转为字符串类型
let num = 10; //string 10
num = 10n;// string 10
// boolean 类型
num = true;// string true
num = undefined;// 04.类型转换.html:85 Uncaught TypeError: Cannot read properties of undefined (reading 'toString')
num = null;// read properties of null (reading 'toString') 会报错
//num = num.toString();
//console.log(typeof num,num)
String()
- 调用xxx函数
- xxx()
- 原理:
- 对于拥有toString()方法的值调用String()函数时, 实际上就是在调用toString()方法 对于null,则直接转换为"null" 对于undefined,直接转换为"undefined"
演示
// 调用构造方法
let b = 10;//string 10
b = true;//string true
b = null;//string null 不报错
b = undefined;// string undefined 不报错
b = String(b);
console.log(typeof b,b)
5.2 类型转换-数值
将其他的数据类型转换为数值
- 使用Number()函数来将其他类型转换为数值
- 专门用来将字符串转换为数值的两个方法
- parseInt()
- parseFloat()
使用Number()函数
- 字符串
- 如果字符串是一个合法的数字,则会自动转换为对应的数字
- 如果字符串不是合法数字,则转换为NaN
- 如果字符串是空串或纯空格的字符串,则转换为0
- 布尔值
- true转换为1,false转换为0
- null 转换为 0
- undefined 转换为 NaN
演示
let a = 123;//number 123
a = 'abc';//number NaN
a = '3.141592654';//number 3.141592654
a = '11px';// number NaN not a number 不是一个数字
a = true;// number 1
a = false;// 0
a = undefined;// NaN
a = null;// 0
a = Number(a);
console.log(typeof a,a)
parseInt()/parseFloat()
- parseInt() —— 将一个字符串转换为一个整数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的整数
- 也可以使用parseInt()来对一个数字进行取整
- parseFloat() 将一个字符串转换为浮点数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的小数
演示
// 方式2 parse 方法
let b = '123px';//number 123 跟Number不同
b = 'a1234';// NaN
b = '3.141592654';//3
b = parseInt(b);
console.log(typeof b,b)
let c = '3.141592654';//3.141592654
c = 'a1234';// NaN
c = parseFloat(c);
console.log(typeof c,c)
5.3 类型转换-布尔值
- 使用Boolean()函数来将其他类型转换为布尔值
- 所有表示空性的没有的错误的值都会转换为false
使用Boolean()函数
转换的情况:
- 数字
- 0 和 NaN 转换为false
- 其余是true
- 字符串:
- 空串 转换为 false
- 其余是true
- null和undefined 都转换为 false
- 对象:对象会转换为true
总结
所有表示空性的没有的错误的值都会转换为false: 0、NaN、空串、null、undefined、false
演示
let a = 1;//boolean true
a = -1;// true
a = 0;// false
a = NaN;//false
a = Infinity;// true
a = '你好啊';//true
a = 'true';// true
a = 'false';//true
a = null;// false
a = undefined; // false
a = '';//false
a = ' ';//true
a = Boolean(a);
console.log(typeof a,a);