javascript中的七大内置类型

74 阅读4分钟

javascript中的七大内置类型

在javascript中存在七种内置类型,其中6中是es5的,在es6中被新增加了一个symbol。

  1. 空值(null)
  2. 未定义(undefined)
  3. 字符串(string)
  4. 数值(number)
  5. 对象(object)
  6. 布尔(boolean)
  7. 符号(symbol)

1. null

一个单值数据类型,只有一个值null,从逻辑上说,它属于一个空值对象,所以: typeof null == object 存在但是没有使用的变量的值就是 null,例如 let a = null undefined其实派生于null ,所以: undefined == null //true 但是这两者完全不同的使用场景

2.undefined

第二个单值数据类型,只有一个值undefined,是指定义了但是还没有赋值的变量 let a; typeof a //undefined 注意一点针对没有声明的变量,typeof的值也是undefined typeof c //undefined

3.string##

字符串用于表示零个或是多个16位Unicode字符组成的字符串。

3.1 字符字面量(转义字符)

字符字面量表

3.2 字符串的特点

字符串一旦被创建就不能改变 let s = "hello"; s = s +"world" 上边的代码发生的事件是,首先创建了一个字符串,填入“hello”,然后创建一个10个字符空间,填入s,"world",这样的拼接方式也是旧版本的浏览器的字符串拼接慢的原因

3.3 字符串转化

两个方法toString(),String() 8. toString() 被调用者是否有这个方法,undefined,null都没有这个方法,注意如果是number类型的数据在转化时可以传入转化后的进制,默认是10进制 let s= 10; s.toString(10); //10 s.toString(16); //a s.toString(8); //12 s.toString(3);//101

  1. String() 在不知道是undefined或是null的情况下,使用String()是最合理的,避免了error的发生, let a ; a.toString(); // Cannot read property 'toString' of undefined String(a);// undefined null同上

4.number

在javascript 中的一般用来表示数值的有整形以及浮点类型,几种进制类型:十进制(10),十六进制(0x10),八进制(010),以及二进制(0b10)

>4.1浮点数

浮点数使用的是17位精度,所以占用的空间相对较大,在计算时候的精确度远远不如整数。ECMA在存储的时候对部分浮点数进行了处理,例如1.0这样的数据会处理成1这样的整数,还有一个就是永远不要测试某个特定的浮点数的值,如下 let a = 0.1; let b = 0.2; a + b ==0.3 ;//false

>4.2数值范围

由于内存限制,在javascript中并不能表示说有的数值,在(Number.MIN_VALUE,Number.MAX_VALUE)之间,超过Number.MAX_VALUE的是+Infinity,小于Number.MIN_VALUE的是-Infinity,同时可以使用isFinite()来进行检测是否为有限数 isFinite(1); //ture

4.3NaN(not a number)

  1. X/0 不报错 在其他的编程语言中,任何数除以0最终的结果会报错,但是在JavaScript中 任何数除以0的值为NaN 1/0 ;//NaN
  2. NaN特点 1.任何数对NaN操作,结果都是NaN 2.NaN与任何数都不相等,包括它自己,NaN != NaN 针对这样的特性只有通过isNaN()来判断是不是not a number,在判断前这个函数会将之转化为数值,任何不能转化为数值的结果都是true; alert(isNaN(NaN)); //true alert(isNaN("10")); //false(可以被转换成数值 10) alert(isNaN(true)); //false(可以被转换成数值 1) alert(isNaN("blue")); //true(不能转换成数值)

>4.4 数值转化

三个方法:Number() , parseInt(), parseFloat()

  1. Number() Number()函数的转换规则如下。 如果是 Boolean 值,true 和 false 将分别被转换为 1和 0。

如果是数字值,只是简单的传入和返回。

如果是 null 值,返回 0。

如果是 undefined,返回 NaN。

如果是字符串,遵循下列规则: 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1" 会变成 1,"123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了); 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽 略前导零); 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整 数值; 如果字符串是空的(不包含任何字符),则将其转换为 0; 如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。 如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换 的结果是 NaN,则调用对象 的 toString()方法,然后再次依照前面的规则转换返回的字符 串值

  1. parseInt()

转换为整数型,相对于Nuuber来说更加合理,同时还可以指定转换后的进制 var num1 = parseInt("1234blue"); // 1234 var num3 = parseInt("0xA"); // 10(十六进制数) var num3 = parseInt("10", 10); //10 (按十进制解析) var num4 = parseInt("10", 16); //16 (按十六进制解析)

  1. parseFloat() parseFloat只是对十进制的进行解析,所以没有第二个参数,parseFloat转换没有小数的数据,返回来的是整数 let a = 10.0; parseFloat(a);//10