数据类型知识点

188 阅读4分钟

1. 7种数据类型

UndefinedNullBooleanNumberStringSymbolObject
其中前6种是简单数据类型,Object是复杂数据类型
Symbol数据类型是Es6新增的

2.typeof操作符

typeof是用来确定任意变量的数据类型,结果主要包括以下字符串:
undefined
boolean
string
number
object
function
symbol
其中比较特殊的是: typeof null的返回值是object,因为null被作为是空对象的引用,所以其数据类型是object

3.Undefined类型

undefined类型只有一个值,就是undefined
当使用var或者let声明变量但是没有初始化时,就相当于给变量赋予了undefined

4.Null类型

Null类型只有一个值,就是null
null值表示一个空对象指针
当变量保存对象,但是没有这个对象时,可以用null来填充
比如: let car = null;

5. Boolean类型

Boolean类型有两个值: truefalse

6.string类型

将一个值转换为字符串的方法 toString()和String()
null 和 undefined 值没有 ttoSting()方法
String()规则如下
- 如果值有 toString()方法,则调用该方法(不传参数)并返回结果。 
- 如果值是 null,返回"null"。 
- 如果值是 undefined,返回"undefined"。

7.Number类型

1.浮点值
存储浮点值使用的内存空间是存储整数值的两倍
2.NaN
NaN不是数值,表示本来要返回的数值操作失败了(不是报错)
比如 console.log(0/0)  //NaN

2.1  isNaN()函数用于判断该参数是否“不是数值”
不能转换为数值的值isNaN()函数的结果是true,否则false
3.数值转换
将非数值转换为数值的三种方法:Number() parseInt() parseFloat()
3.1 Number()
主要用于任何数据类型,转换规则如下:
- 布尔值,true 转换为 1false 转换为 0。 
- 数值,直接返回。 
- null,返回 0。 
- undefined,返回 NaN。 
- 字符串,应用以下规则。 
    如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。 因此,Number("1")返回 1Number("123")返回 123Number("011")返回 11(忽略前面 的零)。 
    如果字符串包含有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样,忽略前面的零)。 
    如果字符串包含有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整数值。 
    如果是空字符串(不包含字符),则返回 0console.log(Number("")) //0
    如果字符串包含除上述情况之外的其他字符,则返回 NaN。 
- 对象,调用 valueOf()方法,并按照上述规则转换返回的值。如果转换结果是 NaN,则调用 toString()方法,再按照转换字符串的规则转换
3.2 parseInt()
主要用于将字符串转换为数值,转换规则如下:
- 字符串最前面的空格会被 忽略,从第一个非空格字符开始转换。如果第一个字符不是数值字符、加号或减号,parseInt()立即 返回 NaN  console.log(parseInt("")) //NaN
- 如果第一个字符 是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。比如, "1234blue"会被转换为 1234,因为"blue"会被完全忽略。
3.3 parseFloat()
主要用于将字符串转换为数值,转换规则如下:
- 第一次出现的小数点是有 效的,但第二次出现的小数点就无效了,此时字符串的剩余字符都会被忽略。

8.Symbol类型

Symbol的用途是确保对象属性使用唯一标识符,不会发生属性冲突。
Symbol()函数不能与 new 关键字一起作为构造函数使用

9.Object类型

每个 Object 实例都有如下属性和方法。 
- constructor:用于创建当前对象的函数。
- hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属性。要检查的属性名必须是字符串(如 o.hasOwnProperty("name"))或符号。 
- isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型。
- propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用for-in 语句枚举。与 hasOwnProperty()一样,属性名必须是字符串。 
- toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。 
- toString():返回对象的字符串表示。 
- valueOf():返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相