你未注意的typeof操做符
typeof可能返回下列某個字符串
- "undefined" -- 若是這個值未定義
- "boolean" -- 若是這個值是布爾值
- "string" -- 若是這個值是字符串
- "number" -- 若是這個值是數值
- "object" -- 若是這個值是對象或者null
- "function" -- 若是這個值是函數
須要注意的幾種狀況
- typeof Infinity === 'number';
- typeof NaN === 'number'; // 儘管NaN是"Not-A-Number"的縮寫
- typeof (typeof 1) === 'string'; // typeof老是返回一個字符串
- typeof undefined === 'undefined';
- typeof declaredButUndefinedVariable === 'undefined';
- typeof undeclaredVariable === 'undefined';
區分數組,普通對象
- typeof [1, 2, 4] === 'object';
- typeof class C{} === 'function'
- typeof Math.sin === 'function';
- typeof null === 'object'; // 從一開始出現JavaScript就是這樣的
typeof爲number舉例
- typeof 37 === 'number';
- typeof 3.14 === 'number';
- typeof Math.LN2 === 'number';
- typeof Infinity === 'number';
- typeof NaN === 'number';
- typeof Number(1) === 'number'; // 不要使用這種形式!
typeof爲string舉例
- typeof "" === 'string';
- typeof "bla" === 'string';
- typeof (typeof 1) === 'string'; // typeof老是返回一個字符串
- typeof String("abc") === 'string'; // 不要使用這種形式!
typeof爲Booleans舉例
- typeof true === 'boolean';
- typeof false === 'boolean';
- typeof Boolean(true) === 'boolean'; // 不要使用這種形式!
typeof爲Symbols舉例
- typeof Symbol() === 'symbol';
- typeof Symbol('foo') === 'symbol';
- typeof Symbol.iterator === 'symbol';
typeof爲Undefined舉例
- typeof undefined === 'undefined';
- typeof declaredButUndefinedVariable === 'undefined';
- typeof undeclaredVariable === 'undefined';
typeof爲Objects舉例
- typeof {a:1} === 'object';
- typeof [1, 2, 4] === 'object';
- typeof new Date() === 'object';
- typeof null === 'object';
typeof爲function舉例
- typeof function(){} === 'function';
- typeof class C{} === 'function'
- typeof Math.sin === 'function';
- typeof new Function() === 'function';
建議不要使用的
- typeof new Boolean(true) === 'object';
- typeof new Number(1) === 'object';
- typeof new String("abc") === 'object';
歡迎關注本站公眾號,獲取更多信息