你未注意的typeof操做符

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操做符

相關文章
相關標籤/搜索