七种数据类型
JS语言中每一个值都属于某一种数据类型,JS共包括七种数据类型,string、number、boolean、undefined、null、object、symbol(ES6新增,暂不涉及)
简单&复杂数据类型
简单数据类型有string、number、boolean、undefined、null,object是复杂的数据类型
它还分为三个子类型:狭义的对象(object),数组(array),函数(function)
typeof运算符
可以通过typeof运算符知道某个值属于什么数据类型,它返回的值有以下七种:
'string'、'number'、'boolean'、'undefined'、'symbol'、'function'、'object'
注意:typeof null返回的是 ‘object’,typeof 函数返回的是 ‘function’
数据类型介绍
null和undefined
两者都表示‘没有’的意思,区别是null表示一个空的对象,转为数值时为0,undefined表示‘此处未定义’,转为数值时为NaN
null == undefined //true
null === undefined //false
布尔值
布尔值有两种状态,true和false,在JS中档某个位置预期是一个布尔值时,会自动将该位置的值转换为布尔值,以下六种值会转换为false:
undefined、null、false、0、NaN、""或''(空字符串)
注意:空数组([])和空对象({})布尔值为true
数值
在JS中所有数字都以64位浮点数进行储存,包括整数
由于浮点数不是精确的值,所以涉及小数的运算要注意:
0,1 + 0.2 === 0.3 //false
0.3 / 0.1 === 3 //false
数值大小和精度:
JS浮点数的64个二进制位从左到右依次代表:
第1位:符号位,0代表整数,1代表负数
第2~12位:指数部分,共11位
第13~64位:小数部分(有效数字),共52位
符号位决定了数值的正负,指数部分决定了数值的大小,小数部分决定了数值的精度
数值大小范围:2^1024 ~ 2^-1023,正向溢出时返回infinity,负向溢出时返回0
数值精度范围:-2^53 ~ 2^53,精度范围外的运算会出错
数值的进制:
十进制(没有前缀)、八进制(前缀0o或0O)、十六进制(前缀0x或0X)、二进制(前缀0b或0B)
字符串
放在单引号或双引号中间的字符
转义符‘\’用来表示一些特殊的字符:
\n :换行符,\r :回车键,\t :制表符,' :单引号," :双引号,\ :反斜杠
字符集:
JS中使用Unicode字符集,允许在程序中是Unicode码点,输出时会自动转成字面形式
每个字符在JS中以16位(2个字节)的UTF-16格式存储,但UTF-16包括两种长度,有16位(U+0000→U+FFFF,2个字节)和32位(U+10000→U+10FFFF,4个字节),JS只能识别2个字节的字符,4个字节的会识别成两个字符
Base64转码:
可以将任意值转换为09、AZ、a~z、+、/ 这64个字符组成的可打印字符
对象
1.对象是一组无序的键值对的集合
2.对象的所有键名都是字符串
3.对象的属性读取可以采用点运算符和方括号运算符,如果使用方括号运算符,键名要放在引号里面,不带引号的当作变量处理,如果使用点运算符,点后面的就是字符串
4.属性查看可以用Object.keys(obj)方法来查看
5.属性删除 delete obj.p //true
删除可删除属性或不存在的属性时返回true,不能删除继承的属性
6.属性是否存在 'p' in obj
不能区分属性时对象本身的还是继承的,可以用hasOwnProperty方法确认
7.属性遍历 for (var key in obj)
它遍历的是对象所有可遍历的属性,会跳过不可遍历的属性
它不仅遍历对象自身的属性,还遍历继承的属性,可以结合hasOwnProperty使用
网友评论