前言
系统学习JavaScript,由于有3年的java后端开发经验,并且有2年的JavaScript+Jquery开发经验,所以像编程语言的一些通用知识就直接跳过了,重点关注JavaScript的语言特性和常用库。
JavaScript数据类型
在JavaScript中一共有6种数据类型:
- string:字符串。
- number:数值型。
- boolean :布尔值。
- undefined:未定义。
- null:空值。
- object:对象类型。
其中string、number、boolean、undefined、null都属于基本类型,只有object属于引用类型。
使用typeof 变量或者自变量可以得到数据类型。
string类型
字符串:用双引号或者单引号括起来的字面量,例子如下。
var s1 = "JavaScript";
var s2 = 'Vue.js';
//输出string
console.log(typeof s1);
number类型
在JavaScript中所有数值都是number类型,包括整型和浮点型。
var n1 = 123;
var n2 = 456.123;
//都是输出number。
console.log(n1);
console.log(n2);
//获取JavaScript最大的数值。等于1.7976931348623157e+308
var maxValueOfNumber = Number.MAX_VALUE;
//当一个数值比JavaScript的最大数值还大时,比如Number.MAX_VALUE*2,会返回Infinity,表示无穷大。
//使用typeof 检查Infinity的类型是number。
//-Infinity表示负无穷,例如Number.MAX_VALUE*-2,其类型也是number
console.log(typeof Infinity);
//最小的JavaScript数值。注意的是,这个最小数值的定义是比0大的最小的小数。
//值为 5e-324 是JavaScript最小的正数。
//而JavaScript最小的负数是 -Number.MAX_VALUE
var minValueOfNumber = Number.MIN_VALUE;
number类型有一个特殊的数值NaN,是英文 Not A Number 的缩写,表示该类型不是一个数字,但是用typeof NaN 返回的是number,通常是进行类型转换时,如果其他类型转换不了number类型,就是返回这个。
在JavaScript中,浮点数无法保证数值的精确性比如下图:
0.1+0.2不是等于0.3.
较小的整型数据能够保证数值的精确,但是太大也不能保证。
所以对数据精确性敏感的数据,不要使用JavaScript来计算,可以使用后端语言,比如Java定点数等进行精确计算。
boolean类型
布尔类型主要有2个值 true、false,用于进行逻辑判断。true表示真,比如11 false表示假 比如 12.
null类型
null空值的类型只有一个,就是null,这个空值专门用于表示一个为空的对象,typeof null 返回 object类型。
undefined类型
undefined未定义,只有一个值,就是undefined,当声明一个变量但是不赋值时,就是undefined,typeof undefined 返回undefined类型,但是如果一个变量都没有声明,那样会报错。
强制类型转换
- 是指将一个数据类型强制转化为其他数据类型。
- 类型转换通常是指将其他数据类型转化为boolean、string、number这三种类型,因为将类型转换为null或者undefined没有意义,也不用强制转换,一个赋值就能完成了。
其他类型转换为string:
方式1:
- 调用被转换数据类型的toString()方法。
- 该方式不会影响原本的变量,只是会将转换的结果返回。
- 注意,null和undefined没有toString()方法,调用会报错。
- 数值型转string
- 布尔型转string
方式二:
- 调用String(被转换的变量)函数。
- 使用String()函数进行转换时,如果是number类型和boolean类型实际上调用的就是toString()方法,如果是undefined,就直接转换为"undefined",如果是null,就直接转换为"null"。
其他类型转换为number类型
方式一:
使用Number()函数进行转换,参数传被转换的变量。
- 字符串转数值:
- 如果是纯数字字符串就转换为一样的数字。
- 如果字符串中含有非数值元素,就转换为NaN。
- 如果字符串是空串或者trim后是空串,就转换为0。
- 布尔转数值:
- true转换为1.
- false转换为0.
- null转换为0。
- undefined转换为NaN。
方式二:
使用parseInt()函数或者parseFloat()函数,顾名思义parseInt是转换为整数,parseFloat转化为浮点数。
- parseInt()函数可以将字符串中的整数部分提取出来。
- parseFloat函数将字符串中的浮点数部分提取出来。
- 其他类型parseInt和parseFloat会先转换为string类型,再转换为整数。
原理是会从左往右解析字符串,知道遇到第一个非数字字符为止,如果第一个字符都是非数字的,就返回NaN。
parseFloat()跟parseInt()差不多,只是他会解析一个小数点,就是数字+一个小数点。
只会解析一个小数点。
其他类型转换为boolean
使用Boolean()函数。
- 数值转boolean:除了0和NaN转换为false,其他都是true。
- 字符串转boolean:除了空串转换为false,其余都是true,包括多个空格也是true,理解为 s.length>0
- null和undefined都是false。