在ES里面,基本数据类型有6个:Number(数字类型),String(字符串类型),Boolean(不布尔类型:真假类型),Null(空元素类型),Undefined(未定义类型),以及ES6新添加的Symbol(对象,象征)
Undefined数据类型
这种数据类型就只有一个值:undefiend(未下定义的)
在声明了一个变量,但是没有给变量赋值的时候,该变量的值就是undefined
let i = ;
console.log(i); //undefined
如果一个变量,连声明都没有声明,那么打印这个变量会直接报错,但是如果使用typeof查看变量类型的时候却会显示出undefined
let i ;
console.log(typeof i); //undefined
console.log(typeof j); //undefined
console.log(i); //undefined
console.log(j); //报错
Null数据类型
这个数据类型也只有一个值,这个值就是null,null代表就是空。Undefined可以看做是从null衍生出来
console.log(null == undefined); //ture
Boolean数据类型
中文叫做布尔值。布尔值只有两个,一个是真(true),一个是假(false)。由于在ES里面严格区分大小写,所以true和True不是同一个东西。
任何其他数据类型都可以转换为布尔类型
数据类型
ture
false
Number
任何非0的数字,都可以转为ture
数字0
String
任何非空的字符串(包括引号里面有空格,或者引号里面有0)
空字符串
在ES里面有一个函数可以将其他数据类型转为布尔类型:Boolean()
let i =5;
console.log( i ,typeof i); //5 number
console.log(Boolean(i) , typsof Boolean (i) ); //ture boolean
以下9个值是会被转为布尔类型里面的false:
“”:双引号空字符串
‘’:单引号空字符串
``:空字符串模板
0和-0:数字0和-0
NaN(非数值)
false
null
undefined
Number数据类型
关于数我们可以分为两大类:一个是整数,一个是实数
整数:整数又可以分为正整数和负整数
let i =5 ;
let j = -9;
关于整数,拥有不同的进制。不同的进制,前面需要添加不同的特殊符号。
二进制:0b
八进制:0
十六进制:0x
let i =0b101;
let j= 012;
let k = 0x11;
console.log(i,j,k); //5 10 17
//无论多少进制,最终使用的时候,都会被转为十进制。
实数:所谓实数,就是我们常见的小数
关于实数的表示方法有两种:小数型,指数型
let i =3.17 ; //小数表示法
let j =9.12e -2 ; //指数表示法
console.log(i ,j);
最大值和最小值
我们可以通过MIN_VALUE以及MAX_VALUE来查看ES里面所支持的最大值和最小值
console.log(Number. MIN_VALUE);
console.log(Number .MAX_VALUE);
后台实现效果:
5e-324;
1.7934343.....e+308;
在ES里面拥有无穷的概念,如果一个数达到2的1024次方,那么这个数就会变为infinity,与之相对的还有-infinity,如果一个数是负的2的1024次方,那么就是-infinity.
console.log( Math.pow (2,1024)); //infinity
console.log(- Math .pow (2,1024)); //-infinity
NaN类型
NaN全称为not a number,意思就是不是一个数。但是这个NaN的数据类型为number
let i =NaN;
conslo.log( typeof i); //number
当成一个标识,标识某一个数据不是一个number
涉及任何NaN的计算,都会返回NaN
let i =10 +NaN ;
console.log( i); //NaN
NaN不和任何值相等,包括自己本身
console.log(NaN==NaN); //false
console.log(NaN==NaN); //false
在ES里面专门判断是否为一个非数的函数isNaN()
console.log( is NaN (NaN) ); //TURE
console.log( is NaN( 5) ); //false
console.log(is NaN ("5")); //FALSE
console.log( is NaN ("abc")); //true
console.log(is NaN (true)); //false
数值转换相关函数:Number() parseInt() parseFloat()
Number():将一个值转换为数值
如果是布尔值,会被转为0或者1
如果是数字,就是一个简单的返回
如果null,返回0
如果是undefined,返回NaN
关于字符串,转换规则如下:
如果字符串里面包含纯数字,就将其转为十进制,如果字符串是写作八进制”012”,这个时候只是会被单纯的转换为12,但是如果是十六进制,就会将十六进制转为十进制,二进制也可以被转换
console.log( Number(“”123“)) ; //123
console.log( Number(“”012”)) ; //12
console.log( Number(“”0xFD“)) ; //253
console.log( Number(“”0b101“)) ; //5
如果字符串里面不是纯数字,而是包含了其他字母或者字符,那么转换为NaN
console.log( Number ("123assd")); //NaN
如果是空字符串,那么转换为0
console.log( Number(" ")); //0
// 但是,需要注意的是,虽然说是尽量转为数字,
// 但是必须是以数字开头才行,如果是字母或者字符开头,还是会转为NaN
// parseInt()接受第二个参数,表明前面的数据是多少进制
// console.log(parseInt("123asd"));
// console.log(parseInt("asdsd1213"));
// console.log(parseInt("12",8));
// 和Number()函数还有一个区别,就是这个函数是将其转为整数
// console.log(parseInt(3.14));
// console.log(Number(3.14));
// console.log(parseFloat("3.14assa"));
// console.log(parseFloat("112",8));
// Number.isInteger():判断一个数是否为整数,如果是返回true,否则返回false
// String数据类型
// 如果字符串外部使用双引号,那么内部就要用单引号,反之亦然。
// 如果外部使用双引号,内部也想使用双引号,那么需要添加转义字符\
// let i ="My name is xuhao\"HOW are you\"";
// console.log(i);
// 可以将其他数据类型转换为字符
// 串类型,toString():可以将除了null和undefined以外的数据类型转为字符串
// let i = 5;
// i= i.toString();
// console.log(i,typeof i);
// let j =null;
// j = j.toString();
// console.log(j,typeof j);
// 可以传入参数,将数字转换为string类型,且指定是多少进制,
// let i = 5;
// i = i.toString(2);
// console.log(i);
// let k =5;
// k=String(k);
// console.log(k,typeof k);
// let f= null;
// f =String();
// console.log(f,typeof f);
// 字符串数据类型非常的霸道,和其他任意数据类型相加,最终得到的都是字符
// 所以将一个非字符串数据类型快速转为字符串的方法就是和一个空字符串相加
// let i = 5;
// i+="";
// console.log(i, typeof i);
// ES6新添加了一个叫做字符串模板。使用两个反引号`
// 字符串模板有两个作用,第一个就是实现多行文本
// let i=`This
// is
// a
// dog
// `;
// console.log(i,typeof i);
// 第二个作用:可以解析变量,
// 只需要将要解析的变量放入${}里面就可以解析了
// let name ="xuahao";
// let i = `my name is ${name}`;
// console.log(i);
// 显式转换:我们程序员强制进行数据类型转换。主要就是转布尔,转数字,转字符串
// 转布尔:Boolean()
// 转数字:Number() parseInt() parseFloat()
// 转字符串:toString() String()
// let i =5;
// i = Boolean();
// console.log(i,typeof i);
// i=Number();
// console.log(i,typeof i);
// i=parseInt();
// console.log(i,typeof i);
// i=parseFloat();
// console.log(i,typeof i);
// i=i.toString();
// console.log(i,typeof i);
// i=String();
// console.log(i,typeof i);
// 快捷方法:
// 转布尔:只需要在名称前面加一个!,如果想要转为和当前类型符合的布尔值,那就加两个!!
// let i =null;
// console.log(!i,typeof !i);
// console.log(i,typeof i);
// 转数字:*1或者/1
// let i=null;
// console.log(i*1,typeof (i*1));
// let j = undefined;
// console.log(j*1,typeof (j*1));