一、类型分类
JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object)。
基本类型有六种: null,undefined,boolean,number,string,symbol(暂不涉及symbol)。
数值(number):整数和小数:1 1.1 .1
科学记数法:1.23e2
二进制:0b11
八进制:011(后来 ES5 添加了 0o11 语法)
十六进制:0x11
字符串(string):文本(比如Hello World)。
空字符串:''
多行字符串:
var s = '12345' +
'67890' // 无回车符号
或
var s = `12345
67890` // 含回车符号,长度是11
布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
(规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
(习俗)如果你想表示一个还没赋值的对象,就用null。如果你想表示一个还没赋值的
字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,
不用写 var xxx = undefined)
null:表示空值,即此处的值为空。
对象(object):各种值组成的集合。
object 就是上面几种基本类型(无序地)组合在一起
object 里面可以有 object
var person = {
name: 'Frank',
'child': {
name: 'Jack'
}, // 最后这个逗号可有可无(ES3规定不写逗号,IE7以下支持;ES5规定写逗号,IE8以上支持)
}
object 的 key 一律是字符串,不存在其他类型的 key
object[''] 是合法的
object['key'] 可以写作 object.key
注意 object.key 与 object[key] 不同
delete object['key']
'key' in object
注意:数组array和函数function不属于数据类型,它们属于对象
二、typeof 运算符
JavaScript 有三种方法,可以确定一个值到底是什么类型。
typeof运算符
instanceof运算符(暂不涉及)
Object.prototype.toString方法(暂不涉及)

如果我们想获得一个变量的正确类型,可以通过 Object.prototype.toString.call(xx)。这样我们就可以获得类似 [Object Type] 的字符串。
三、null和undefined
null与undefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,语法效果几乎没区别。
null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
undefined表示“未定义”,下面是返回undefined的典型场景。
