JavaScript高级程序设计(第四版)

JS红宝书之第三章(三)数据类型(一)

2021-01-18  本文已影响0人  莘栀

数据类型

typeof 操作符

基于 typeof 检测出来的结果:首先是一个字符串,并且字符串中包含对应的类型

  typeof 1; // "number"
  typeof NaN; // "number"
  typeof 'str'; // "string"
  typeof true; // "boolean"
  typeof null; // "object" 局限性之一
  typeof undefined; // "undefined"
  var a;
  // var b;
  typeof a; // undefined 声明变量但未初始化
  typeof b; // undefined 未声明;对于尚未声明的变量,只能进行 typeof 操作,其他操作都会报错
  typeof {}; // "object"
  typeof []; // "object"
  typeof /^$/; // "object"
  typeof Math; // "object"
  typeof function(){}; // "function"
  typeof Date; // "function"
检测数据类型方式
  1. typeof [val]: 用来检测数据类型的运算符
  2. instanceof: 用来检测当前实例是否隶属于某各类
  3. constructor: 基于构造函数检测数据类型(基于类的方式)
  4. Object.prototype.toString().call(): 检测数据类型最好

面试题

  typeof typeof typeof []; // "string",先算离[]最近的typeof
  1. typeof [] => "object"
  2. typeof "object" => "string"
  3. 因为 typeof 检测出来的结果是字符串,只要出现两个及两个以上检测,结果就是 "string"

instanceof

语法:result = variable instanceof constructor

var obj = {};
obj instanceof Object; // true

var arr = [];
arr instanceof Array; // true

var pattern = /[1-9]/g;
pattern instanceof RegExp; // true

var fn = function(){};
fn instanceof Function; // true

Undefined 与 Null

var a ;
console.log('a的类型: ' + typeof a); // undefined 表示 a 未定义
console.log('从未声明过的 b 类型: ' + typeof b); // undefined 表示 b 未曾声明
console.log(a); // => undefined
console.log(b); // => error:Uncaught ReferenceError: b is not defined at xxx.html:36

// 声明为 null 的变量准备在将来保存对象
// null 表示一个空指针对象
console.log('typeof null => ', typeof null); // object
// undefined 派生自 null ????
console.log('undefined == null ==>', undefined == null);

Boolean()

false 值只有五种 false '' 0 NaN undefined null

!! 是运算符中的 Boolean()

// Boolean 有两个值 true false
// String
console.log('Boolean(\' \') => ', Boolean(' ')); // true
console.log('Boolean(\'\') => ', Boolean('')); // false 1

// Number
console.log('Boolean(0) => ', Boolean(0)); // false 2
console.log('Boolean(NaN) => ', Boolean(NaN)); // false 3
console.log('Boolean(123) => ', Boolean(123)); // true

// Object
console.log('Boolean(null) => ', Boolean(null)); // false 4
console.log('Boolean({}) => ', Boolean({})); // true
console.log('Boolean([]) => ', Boolean([])); // true

// function
console.log('function(){} => ', Boolean(function(){})); // true

// Undefined
console.log('Boolean(undefined) => ', Boolean(undefined)); // false 5
上一篇 下一篇

猜你喜欢

热点阅读