数据类型与typeof操作符

ECMAScript 中有 5 种简单数据类型(也称为基本数据类型): UndefinedNull BooleanNumber
String 。还有 1种复杂数据类型—— ObjectObject 本质上是由一组无序的名值对组成的。ECMAScript
不支持任何创建自定义类型的机制,而所有值最终都将是上述 6 种数据类型之一。

鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型—— typeof 就
是负责提供这方面信息的操作符。对一个值使用 typeof 操作符可能返回下列某个字符串:

  •  "undefined" ——如果这个值未定义;
  •  "boolean" ——如果这个值是布尔值;
  •  "string" ——如果这个值是字符串;
  •   "number" ——如果这个值是数值;
  •   "object" ——如果这个值是对象或 null ;
  •     "function" ——如果这个值是函数。

 

1、Undefined 类型只有一个值,即特殊的 undefined 。在使用 var 声明变量但未对其加以初始化时(赋值),这个变量的值就是 undefined;

var aaa ;
console.log(aaa);//undefined
console.log(typeof(aaa)); //undefined
console.log(bbb);//报错

 如果打印没有声明的变量会报错

2、Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null 。从逻辑角度来看, null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回 "object" 的原因;

var aaa = null;
console.log(typeof(aaa));//object
console.log(null==undefined);//true

实际上, undefined 值是派生自 null 值的,因此 ECMA-262规定对它们的相等性测试要返回 true;

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值。这样做不仅可以
体现 null 作为空对象指针的惯例,而且也有助于进一步区分 null 和 undefined 。

 

posted @ 2019-09-06 16:04  LeeOoooon  阅读(204)  评论(0编辑  收藏  举报