JavaScript核心 数据类型
2021-07-04 本文已影响0人
h2coder
介绍
- 数据类型指的就是字面量的类型,在JS中有6种数据类型
- String 字符串
- Number 数值
- Boolean 布尔值
- Null 空值
- Undefined 未定义
- Object 对象
- 其中,String、Number、Boolean、Null、Undefined、Object属于基本数据类型,而Object属于引用数据类型
String 字符串
- 在JS中,字符串需要使用引号来引起来
- 使用双引号或单引号都可以,但是不要混着用
- 引号不能嵌套,双引号不能放双引号,单引号不能放单引号
var str = "hello";
//var str = 'hello';
str = '我说:"今天天气真不错"';
转义符
- 在字符串中,我们可以使用\作为转义字符,当表示一些特殊符号时,可以使用\进行转义。
- " 表示"
- ' 表示'
- \n 表示换行
- \t 制表符,相当于Tab键
- \ 表示\
var str = '我说:\"今天天气真不错\"';
//换行符:\n
str = '我说:\"今天\n天气真不错\"';
//制表符:\t
str = '我说:\"今天\t天气真不错\"';
//输出\,自己转义自己即可
str = "\\";
//输出变量str
alert(str);
//输出字面量 字符串str
alert("str");
var str2 = "hello";
str2 = "你好";
str2 = 3;
Number 数值
- 在JS中,所有的数值都是Number类型,包括整数、浮点数(小数)
//数字
var a = 123;
a = 456.789;
//这个是字符串
var b = "123";
- JS中,可以使用运算符typeof,来检查一个变量的类型
- 语法:typeof 变量
- 检查字符串时,返回string,检查数值时,返回number
//number
console.log(typeof a);
//string
console.log(typeof b);
最大值、最小值
- JS中,可以表示的最大值和最小值
- Number.MAX_VALUE,数字的最大值,:1.7976931348623157e+308
- Number.MIN_VALUE,大于0的最小的最小值:5e-324
//最大值,1.7976931348623157e+308
var a = Number.MAX_VALUE;
//最小值,5e-324
var b = Number.MIN_VALUE;
正无穷、负无穷
- 如果使用Number表示的数字,超过了最大值,则会返回一个Infinity
- Infinity:表示正无穷
- -Infinity:表示负无穷
- 使用typeof检查Infinity,也会返回number
//正无穷,Infinity
var a = Number.MAX_VALUE * Number.MAX_VALUE;
//负无穷,-Infinity
var b = -Number.MAX_VALUE * Number.MAX_VALUE;
//number
typeof(Number.MAX_VALUE * Number.MAX_VALUE);
NaN
- NaN是一个特殊的数字,表示Not a Number
- 使用typeof检查一个NaN,也会返回number
//非数字,NaN 是一个特殊的数字,表示Not a Number
var a = "abc" * "bcd";
a = NaN;
console.log(a);
//number
typeof(NaN);
运算精度问题
- 在JS中,整数的运算,基本可以保证精准
var c = 1865789 + 7654321;
console.log(c);
- 如果使用JS进行浮点数运算,可能得到一个不精准的结果。所以千万不要使用JS,进行对精确度要求较高的运算
var c = 0.1 + 0.2;
console.log(c);
Boolean 布尔值
- 布尔值,只有2个,主要用来做逻辑判断
- true,表示真
- false,表示假
- 使用typeof检查一个布尔值时,会返回boolean
var bool = true;
//true
console.log(bool);
//boolean
console.log(typeof bool);
Null和Undefined
- Null
- Null类型的值,只有一个,就是null
- null这个值专门用来表示一个为空的对象
- 使用typeof检查一个null值时,会返回object
var a = null;
console.log(a);
//object
console.log(typeof a);
- Undefined
- Undefined(未定义)类型的值只有一个,就是undefined
- 当声明一个变量,但是并不给变量赋值时,它的值就是undefined
- 使用typeof检查一个undefined时,返回undefined
var b;
//undefined
console.log(b);
//undefined
console.log(typeof b);
强制类型转换
- 指将一个数据类型,强制转换为其他类型
- 类型转换,主要将其他数据类型,转换为 String Number Boolean
将其他的数据类型,转换为String
- 方式一
- 调用被转换类型的toString()方法,该方法不会影响原变量,它会将转换的结果返回
- null和undefined,这2个值,没有toString()方法,如果调用它们的方法,会报错
//方式一:数值转字符串
var a = 123;
a = a.toString();
//布尔值转字符串
a = true;
a = a.toString();
a = null;
//a = a.toString();//报错
a = undefined;
//a= a.toString();//报错
- 方式二
- 调用String的()函数,并将要转换的数据作为参数传递给函数
- 使用String()函数,做强制类型转换时:
- 对于Number和Boolean的,对它们做转换时,实际上就是调用了toString()方法
- 但是对于null和undefined,就不会调用toString()方法
- 它会将null,转换为"null"字符串
- 将undefined,转换为"undefined"字符串
//方式二:调用String()函数,来将a转换为字符串
var a = 123;
a = String(a);
a = null;
a = String(a);
a = undefined;
a = String(a);
console.log(typeof a);
console.log(a);
将其他的数据类型,转换为Number
- 方式一
- 使用Number()函数
- 字符串 --> 数字
- 字符串转数字,如果是纯数字的字符串,则直接将其转换为数字
- 如果字符串中有非数字的内容,则转换为NaN
- 如果字符串是一个空串,或者全都是一个空格的字符串,则转换为0
- 布尔值 --> 数字
- 1.true转换为1,false转换为0
- null -> 数字 0
- undefined --> 数字 NaN
//字符串转数据
var a = "123";//纯数字,转换为123
//a = "123abc";//内容中有非数字,转换为NaN
//a = "";//是空串,转换为0
//a = " ";//都是空格,转换为0
//布尔值转数据
//a = true;//true转换为1,false转换为0
//null转数字
a = null;
a = Number(a);//null转换为0
//undefined转数字
a = undefined;
a= Number(a);//undefined转换为NaN
a = Number(a);
console.log(a);
- 方式二
- 这种方式专门用来对付字符串
- parseInt(),把一个字符串转换为一个整数
- parseFloat(),把一个字符串转换为一个浮点数
var a = "123px";
a = "b123";//第一个就不是数字,NaN
a = "123a456";//中间有英文,只取前边的部分,123
a = "123.567a999";//有小数点,只取小数点前的部分(整数),123
/**
* 字符串转整数
* parseInt(),可以将一个字符串中有效的整数内容取出来,转换为Number
*
* 字符串转小数
* parseFloat(),作用和parseInt()类似,不同的是它可以获取有效的小数
*/
a = parseInt(a);
a = "123.456px";//希望取出来是浮点型,使用parseFloat(),123.456
a = "123.456.789px";//123.456,后面第二个点之后都不要了,因为不是有效的了
a = parseFloat(a);
/**
* 布尔型转数字
* 如果对非String,使用parseInt()或parseFloat()
* 它会先将其转换为String,然后再操作,所以才会转换为NaN
*/
a = true;
a = parseInt(a);
//小数取整
a = 198.23;
a = parseInt(a);//198,对小数取整的一种方式
//number
console.log(typeof a);
//198
console.log(a);
将其他的数据类型转换为Boolean
- 使用Boolean()函数
- 数字 ---> 布尔
- 除了0和NaN,其余的都是true
- 字符串 ---> 布尔
- 除了空串,其余的都是true
- null和undefined都会转换为false
- 对象也会转换为true
- 数字 ---> 布尔
//数字转布尔值
var a = 123; //true
a = -123; //true
a = 0; //false
a = Infinity; //true
a = NaN; //false
//调用Boolean()函数来将a转换为布尔值
a = Boolean(a);
//空串转布尔值
a = " ";//false
a = Boolean(a);
//null转布尔值
a = null;//false
a = Boolean(a);
//undefined转布尔值
a = undefined;//false
a = Boolean(a);
console.log(typeof a);
console.log(a);