1. Undefined:未定义型
一个变量声明了但是未赋值的情况下就是undefined;
2. Null:空型
一般用来清空变量,也起了占位作用
3. String:字符型
凡是被双引号或单引号包裹起来的都叫做字符型,字符串有length属性。
4. Number:数值型
包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
(1)NaN:非数字类型。
特点:①涉及到的任何关于NaN的操作,都会返回NaN
② NaN不等于自身。
(2)isNaN() :用于检查其参数是不是数值,得到的结果是一个布尔值,不是数值返回true,是数值返回false。
5. Boolean:布尔型
只有true和false两个值。
6. Symbol代表创建后独一无二且不可变的数据类型,它的出现我认为主要是为了解决可能出现的全局变量冲突的问题。
7. BigInt是一种数字类型的数据,它可以表示任意精度格式的整数,使用BigInt可以安全地存储和操作大整数,即使这个数已经超出了Number能够表示的安全整数范围。
js中有5种数据类型:Undefined、Null、Boolean、Number和String。还有一种复杂的数据类型Object,Object本质是一组无序的名值对组成的。
Undefined类型只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的,例子:
var
i
alert(i == undefined)//true
var i与var i =
undefined这两句是等价的。
包含Undefined值的变量和未定义的变量是不一样的。
Null类型也只有一个值:null.null表示一个空对象的指针。
Boolean类型:只有两个字面量true和false。但是js中多有的变量都可以使用Boolean()函数转换成一个Boolean类型的值。
Number类型:整数和浮点数。NaN:Not
a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0
返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。
针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。
String类型:略
typeof操作符:对一个变量进行推断变量的类型,可能返回以下字符串:
"undefined"
如果这个值,未定义或者为初始化
"boolean" 布尔值
"string" 字符串
"number" 数值
"object"
对象
"function" 函数
用法:typeof 95 或者 typeof(95)会返回"number".
一、怎样将一个数据转成浮点数 https://www.zhihu.com/question/21711083二、js 的 Number 在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。三、造成哪些问题? 1、小数计算精度丢失,比如 0.1+0.2 不等于 0.3 2、整数最大范围 整数是按最大54位来算最大(253 - 1,Number.MAX_SAFE_INTEGER,9007199254740991) 和最小(-(253 - 1),Number.MIN_SAFE_INTEGER,-9007199254740991) 安全整数范围的。所以只要超过这个范围,就会存在被舍去的精度问题。四、解决办法 开源的库、bigInt、 0.1+0.2-0.3 // 5.551115123125783e-17 5.551115123125783e-17.toFixed(20) // '0.00000000000000005551' 5.551115123125783e-17<Number.EPSILON*Math.pow(2,2) // true重新整理https://zhuanlan.zhihu.com/p/73699947回顾一个基础问题,js 中的精度丢失问题。 一、在 js 中只有双精度浮点数来存储的Number,数据存储会有三个步骤:1、十进制转二进制 2、二进制转科学技术法 3、按 IEEE754 标准存储。 二、双精度浮点一共有 64位,64位比特又可分为三个部分: 符号位S:第 1 位是正负数符号位(sign),0代表正数,1代表负数 指数位E:中间的 11 位存储指数(exponent),用来表示次方数 尾数位M:最后的 52 位是尾数(mantissa),超出的部分自动进一舍零 三、基于以上知识,在数据小数位在进行转换二进制时,会出现无线循环的情况,而数据转成 IEEE754标准时又仅支持 52 位,所以要发生一个数据截断,也就是精度丢失。 四、常见的丢失场景, 0.1 + 0.2 === 0.30000000000000004 parseInt(0.58*100,10)=57 (1.335).toFixed(2) 四、解决办法math.js bignumber.js等库以及 es6 针对整数精度丢失的新数据类型BigInt