1. 分类(2大类)
  • 基本(值)类型
    • Number: 任意数值
    • String: 任意文本
    • Boolean: true/false
    • undefined: undefined
    • null: null
  • 对象(引用)类型
    • Object: 任意对象
    • Array: 特别的对象类型(下标/内部数据有序)
    • Function: 特别的对象类型(可执行)
  1. 判断
  • typeof:
    • 可以区别: 数值, 字符串, 布尔值, undefined, function
    • 不能区别: null与对象, 一般对象与数组
  • instanceof
    • 专门用来判断对象数据的类型: Object, Array与Function
  • ===
    • 可以判断: undefined和null

      示例

  1. // typeof: 返回的是数据类型的字符串表达形式
  2. //1. 基本类型
  3. var a
  4. console.log(a, typeof a, a===undefined) // undefined 'undefined' true
  5. console.log(a===typeof a) // false
  6. a = 3
  7. console.log(typeof a === 'number') // true
  8. a = 'atguigu'
  9. console.log(typeof a === 'string') // true
  10. a = true
  11. console.log(typeof a === 'boolean') // true
  12. a = null
  13. console.log(a===null) // true
  14. console.log(typeof a) // 'object'
  15. console.log('--------------------------------')
  16. // instanceof: 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上
  17. //2. 对象类型
  18. var b1 = {
  19. b2: [2, 'abc', console.log],
  20. b3: function () {
  21. console.log('b3()')
  22. }
  23. }
  24. console.log(b1 instanceof Object, typeof b1) // true 'object'
  25. console.log(b1.b2 instanceof Array, typeof b1.b2) // true 'object'
  26. console.log(b1.b3 instanceof Function, typeof b1.b3) // true 'function'
  27. console.log(typeof b1.b2[2]) // 'function'
  28. console.log(b1.b2[2]('abc')) // 'abc' undefined

几个问题说明

  1. undefined与null的区别?
  • undefined代表没有赋值
  • null代表赋值了, 只是值为null
  1. 什么时候给变量赋值为null呢?
  • var a = null //a将指向一个对象, 但对象此时还没有确定
  • a = null //让a指向的对象成为垃圾对象
  1. 严格区别变量类型与数据类型?
  • js的变量本身是没有类型的, 变量的类型实际上是变量内存中数据的类型
  • 变量类型:
    • 基本类型: 保存基本类型数据的变量
    • 引用类型: 保存对象地址值的变量
  • 数据对象

    • 基本类型
    • 对象类型 ```javascript // 1. undefined与null的区别? var a1 var a2 = null console.log(a1, a2)

    // 2. 什么时候给变量赋值为null呢? //初始 var a3 = null //中间 var name = ‘Tom’ var age = 12 a3 = { name: name, age: age } //结束 a3 = null ```