1. 数据类型分类
JavaScript数据类型可分为6种简单数据类型(基本数据类型)和1种复杂数据类型(Object)
2. 6 种基本数据类型
2.1 Number类型
十进制:10 = 10
二进制:0b 11 = 3
八进制:0 70 = 56
十六进制:0x A = 10
NaN非数值,是一个特殊的数值,涉及它的运算都返回NaN,它不等于任何值包括它本身,isNaN()可以确定参数是否不是数值
所有的数字都是以64位浮点数的形式储存
2.2 String 类型
‘你好’ === “你好”
‘’ 空字符串,长度为0
‘ ’ 空格字符串,长度为1
\字符 :转义字符,长度为1,如 \n 指回车(13)
一个字符是由16位(bit)来存储的,即2Bytes
延伸: 8位(bit)=1字节(Byte),1024字节=1KB;字节是固定由8位二进制构成,64位系统就代表了64位的二进制代表一个字,换算成字节就是64/8=8,即是说由8字节构成一个字,32位系统就是32/8=4,4个字节代表一个字。字长则是一个字对应的二进制长度,64位系统字长就是64位。
多行字符串(不是字符串中有回车)的三种写法:
a、“\”:\后面只能是回车,不能有空格等其他东西
eg:“123
456”
b、“+”:拼接字符串操作
c、 ES6的反引号操作:` `,这个操作支持字符串中的空格回车,甚至可以有变量
2.3 Boolean 类型
true 和 false(区分大小写),字面值只有这两个,其他如 True 等都不是,和1与0是两码事
2.4 Symbol 类型
一个独一无二的值
2.5 Undefined 类型
只有 undefined 一个值
2.6 Null 类型
只有 null 一个值
undefined和null的区别:
a、变量没有赋值,就是undefined
b、有一个对象Object,暂时不想赋值,推荐 null 填充;非对象则推荐 undefined 填充
2.7 Object 类型
ECMAScript中的对象其实就是一组数据和功能的集合,它是由一系列简单数据类型组成的
PS:
a、person[‘name’] !== person[name],如果有var name = ‘fool’,那么person[name] == person[‘fool’]
‘name’ 和 name 的区别(敲重要):
’name’ 是字符串
name 是变量,可以是任何类型
b、delete person.name 和 person.name = ‘undefined’ 的操作是不同的,前者是删除属性及其对应值,后者只删除值
c、for in的用法:
for (var key in person){
console.log(key, person[key]) //注意变量是key,其中的person[key]不能加引号
}
3. typeof 操作符
4. 类型转换
4.1 转换为字符串
a、.toString(),转换null和undefined时会报错
b、加空字符串,都可以转换,eg:null + ‘’ = “null”,推荐此方法
4.2 转换为布尔值
a、**Boolean()**方法
b、取反再取反操作,即 !! 操作,eg:!!1 = true
**注意:**5个falsy值
0,NaN,’’ ,null,undefined
4.3 转换为数值
a、Number()方法
b、parseInt()方法
c、parseFloat()方法
d、其它类型 - 0 方法:如 ‘1’ - 0 === 1
e、+ 其它类型:如 + ‘1’ === 1
parseInt()方法的几个实例:
var num = parseInt('1234blue') //1234
var num = parseInt('') //NaN
var num = parseInt('0xA') //10
var num = parseInt('22.5') //22
var num = parseInt('070') //70,ECMAScript5已经不具备解析八进制数的能力
var num = parseInt('70', 10) //70
parseInt(xxx, 几进制数),其中务必加上第二个参数,免得造成误解。