javascript数据类型(一)--- 分类及判断类型

一、数据类型分类

  JavaScript的数据类型分为基本类型的对象类型:

1.1 基本类型(也称为值类型)

  1. String: 任意字符串;

  2.Number: 任意的数字;

  3.boolean: true/false;

  4. undefined: undefined;

  5. null: null;

 

1.2 对象(引用)类型

  1.Object: 任意对象;

  2.Function: 一种特殊的对象(可以执行);

  3.Array: 一种特别的对象(数值下标)

 

二、判断数据类型

  这里所说的判断类型是指:typeof 和 instanceof 运算符计算的结果使用 ===/==来判断数据的类型

2.1 typeof

  typeof运算符用于返回数据类型的字符串。返回的字符串是小写的类型名。typeof可以用于判断undefined /  数值 / 字符串 / 布尔值 / 函数.例如

  • typeof 'hello world'  =>  'string'
  • typeof 123  =>  'number'
  • typeof true  =>  'boolean'
  • var a; typeof a  =>  'undefined'
  • var a = function(){} typeof a  => 'function'
  • 注意,使用typeof计算null返回的是‘object’.var a = null ; typeof a  =>  'object'
  • 注意,使用typeof计算数组,返回的是‘object’. var a = [1,2]; typeof a  =>  'object'
  • 注意,typeof 不能区分null 与 Object, Array 与 Object

 

2.2 instanceof

  instanceof是判断某个对象是否是某个类型的实例, 所有javascript对象都是Object类型,及所有的对象都使用instanceof判断是否为Object对象时都会返回true(此处需要注意基本数据类型的字面量不是对象,因此判断基本类型的字面量instanceof Object返回值是false ),即:

  • 任意对象 instanceof Object => true
  • undefined instanceof Object  => false (基本类型字面量不是对象)
  • null instance of Object  => false (基本类型字面量不是对象)
  • 注意: ‘hello’ instanceof Object  => false;  ‘hello’是基本类型的字面量
  • 注意:new String('hello') instanceof Object  => true; 此时的字符串是一个对象

 

  注意以上的用法之后,instanceof 的使用就类似java中的instanceof的使用,用于判断某个对象的具体类型。例如:

  • var a = function(){}  a instanceof Function  =>  true;  a instanceof Object => true;
  • var a = [1, 2, 3]; a instanceof Array  =>  true;  a instanceof Object  => true;

 

2.3 ===/==

  === : 表示绝对相等,比较时不会进行类型转换。例如: typeof  ‘hello’  ===  'string'   =>  true ;

  == : 表示相等,比较是若数据类型不相等,会自动转换类型后在进行内容的比较。 例如:

  • ‘123’  == 123  => true
  • '123'  === 123  => false

 

三、相关小问题

3.1 undefined与null的区别?
  * undefined代表定义未赋值
  * nulll定义并赋值了, 只是值为null


3.2 什么时候给变量赋值为null呢?
  * 初始赋值, 表明将要赋值为对象
  * 结束前, 让对象成为垃圾对象(被垃圾回收器回收)


3.3 严格区别变量类型与数据类型?
  * 数据的类型
    * 基本类型
    * 对象类型
  * 变量的类型(变量内存值的类型)
    * 基本类型: 保存就是基本类型的数据
    * 引用类型: 保存的是地址值

posted @ 2019-09-21 00:49  猩兵哥哥  阅读(249)  评论(0编辑  收藏  举报