typeof可能返回下列某个字符串

  1. "undefined" -- 如果这个值未定义
  2. "boolean" -- 如果这个值是布尔值
  3. "string" -- 如果这个值是字符串
  4. "number" -- 如果这个值是数值
  5. "object" -- 如果这个值是对象或者null
  6. "function" -- 如果这个值是函数

需要注意的几种情况

  1. typeof Infinity === 'number';
  2. typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写
  3. typeof (typeof 1) === 'string'; // typeof总是返回一个字符串
  4. typeof undefined === 'undefined';
  5. typeof declaredButUndefinedVariable === 'undefined';
  6. typeof undeclaredVariable === 'undefined';

区分数组,普通对象

  1. typeof [1, 2, 4] === 'object';
  2. typeof class C{} === 'function'
  3. typeof Math.sin === 'function';
  4. typeof null === 'object'; // 从一开始出现JavaScript就是这样的

typeof为number举例

  1. typeof 37 === 'number';
  2. typeof 3.14 === 'number';
  3. typeof Math.LN2 === 'number';
  4. typeof Infinity === 'number';
  5. typeof NaN === 'number';
  6. typeof Number(1) === 'number'; // 不要使用这种形式!

typeof为string举例

  1. typeof "" === 'string';
  2. typeof "bla" === 'string';
  3. typeof (typeof 1) === 'string'; // typeof总是返回一个字符串
  4. typeof String("abc") === 'string'; // 不要使用这种形式!

typeof为Booleans举例

  1. typeof true === 'boolean';
  2. typeof false === 'boolean';
  3. typeof Boolean(true) === 'boolean'; // 不要使用这种形式!

typeof为Symbols举例

  1. typeof Symbol() === 'symbol';
  2. typeof Symbol('foo') === 'symbol';
  3. typeof Symbol.iterator === 'symbol';

typeof为Undefined举例

  1. typeof undefined === 'undefined';
  2. typeof declaredButUndefinedVariable === 'undefined';
  3. typeof undeclaredVariable === 'undefined';

typeof为Objects举例

  1. typeof {a:1} === 'object';
  2. typeof [1, 2, 4] === 'object';
  3. typeof new Date() === 'object';
  4. typeof null === 'object';

typeof为function举例

  1. typeof function(){} === 'function';
  2. typeof class C{} === 'function'
  3. typeof Math.sin === 'function';
  4. typeof new Function() === 'function';

建议不要使用的

  1. typeof new Boolean(true) === 'object';
  2. typeof new Number(1) === 'object';
  3. typeof new String("abc") === 'object';

参考文档:MDN-typeof操作符


pitaojin
326 声望36 粉丝