JS的基本数据类型

JavaScript013

JS的基本数据类型,第1张

JS中一共有六种基本数据类型,分别是Undefined、Null、Boolean、Number、String,还有在ES6中新增的Symbol和ES10中新增的BigInt类型。

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能够表示的安全整数范围。

1、number类型

① number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后至少有一位数字)。

浮点数会自动转换为整数,如下:

let num = 1.00

console.log(num) // 输出:1,自动转换为了整数

② 浮点数的最高精度是17位,看下面的例子:

let a = 0.1

let b = 0.2

console.log(a + b) // 输出:0.30000000000000004

上面的例子,结果竟然不是0.3,至于其他变成语言,也会遇到这种情况(关于浮点数计算会产生误差问题,其他有些变成语言也会出现类似情况。)

③ NaN:非数字类型,特点:涉及到任何关于NaN的操作,都会返回NaN,而且NaN不等于自身。如下:

let name = 'lisi'

console.log(name / 10) // 输出:NaN

console.log(NaN === NaN) // 输出:false

④ isNaN()函数用于判断是否是一个非数字类型,如果传入的参数是一个非数字类型,那么返回true,否则返回false;

⑤ isNaN()函数传入一个参数,函数会先将参数转换为数值,如果参数类型为对象类型,会先调用对象的valueOf()方法,再确定该方法返回的值是否可以转换为数值类型,如果不能,再调用对象的toString()方法,再确定返回值;

⑦ 数值转化:

Number(),转型函数,可以用于任何数据类型

parseInt(),将值转换为整型,用的较多

parseFloat(),将值转换为浮点型

2、string类型

① 字符串类型中的单双引号作用一样;

② 字符串有length属性,可以取得字符串的长度:

let str = 'Hello world'

console.log(str.length) // 输出:11

③ 字符串的值是不可变的,要改变一个字符串的值,首先要销毁原来的字符串,再用另一个包含新值得字符串区填充该字符串;

④ 字符串转换:

String(),转型函数,适用于任何数据类型(null,undefined转换后为null和undefined)

toString()方法可以把一个逻辑值转换为字符串,并返回结果(null、undefined没有toString()方法)

let ab = 'zhangsan'

let bc = null

let cd = undefined

console.log(ab.toString()) // 输出:zhangsan

// console.log(bc.toString()) // error 报错

// console.log(cd.toString()) // error 报错

console.log(String(ab)) // 输出:zhangsan

console.log(String(bc)) // 输出:null

console.log(String(cd)) // 输出:undefined

3、boolean类型

① 这个类型只有两个值,true和false;

② Boolean(),转型函数,将某个值转换为Boolean类型

4、null类型

① null类型被看做空对象指针,只有一个值,即null值,所以在用typeof操作符去检测null类型的值得时候,结果是object类型;

② 如果你定义了一个变量,但是想在以后把这个对象当做一个对象来使用,最好将该对象初始化为null值

5、undefined类型

① 只有一个值,即undefined,如果声明了一个变量,但是未给变量初始化值,那么这个变量的值就是undefined:

let name = 'zhangsan'

let age

console.log(name) // 输出:zhangsan

console.log(age) // undefined,因为声明了age,但是没有给初始化值

② 调用函数时,应该提供的参数没有提供,该参数等于undefined;

③ 对象没有赋值的属性,该属性的值为undefined;

④ 函数没有返回值,默认返回undefined。

以上就是javascript的基本数据类型有哪些?的详细内容,更多请关注html中文网其它相关文章!

一、怎样将一个数据转成浮点数   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