1、分类:
原始值(基本数据类型) 对象
原始值:bool,number,string,null,undefined
特点
(1)按值进行比较
(2)不可改变,其属性不能被改变,添加或删除
*
对象:除上述之外都是对象,
Object || Function(一种特殊的对象(
可以执行)) || Array(一种特殊的属性(数值下标,内部数据是有序的**))
2、判断:
*typeof || instanceof || ===

typeof value

返回一个表示这个值“类型”的字符串表达,特殊的[]返回object,undefined返回'undefined',null返回'object',但这里并不表示null是一个对象,而是一个不能修正的bug,因为这会破坏现有的代码。

var a
console.log(a,typeof a,typeof a === 'undefined',a === undefined)//undefined 'undefined' true true
a = 4
console.log(typeof a, a === 'number')//'number' true
a = 'ssss'
console.log(typeof a,a === 'string')//'string' true
a = true
console.log(typeof a, a === 'bool')//'bool' true
a = null
console.log(typeof a, a === null)//'object' true

typeof可以用来判断undefined,数值类型,字符串,布尔值
不能判断null和object object和array

value instanceof Object

返回对象的基本类型,

var b1 = {
    b2 : [1,'abc',console.log]
    b3 : function(){
        console.log('b3')
        return function(){
            return 'ccc'
        }
    }
}
console.log(b1 instanceof Object,b1 instanceof Array)//true false
console.log(b1.b2 instanceof Array,b1.b2 instanceof Object)//true true
console.log(b1.b3 instanceof Function,b1.b3 instanceof Object)//true true
console.log(typeof b1.b2[2] === 'function')//true
console.log(typeof b1.b2)//object
console.log(b1.b3()())//ccc

相关问题
1、undefined和null的区别
undefined表示定义了但未赋值,null表示定义了也赋值了,只是赋的值为null;
2、什么时候使用null
两种情况,一是初始赋值,表明将要赋值为对象;二是结束时,使对象成为垃圾对象便于垃圾回收器回收;
3、严格区别变量类型与数据类型
变量类型(变量内存值的类型):基本型(保存的是基本类型的数据)和引用型(保存的是地址值的类型)
数据类型:基本型和对象型