Skip to content

Latest commit

 

History

History
84 lines (67 loc) · 3.63 KB

第4章-4.1 基本类型和引用类型.md

File metadata and controls

84 lines (67 loc) · 3.63 KB

第三章-3.4 数据类型

本章内容

  • 数据类型(只包含了要点,详细请参考原书)
  • typeof 操作符

数据类型

ECMAScript 有 5 种简单数据类型(也称为基本数据类型):

  • Undefined
  • Null
  • Boolean
  • Number
  • String

还有一种复杂数据类型:

  • Object

ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述 6 种数据类型之一。

typeof 操作符

  鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型。对一个值使用 typeof 操作符可能会返回下列某个字符串。

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

Undefined 类型

  Undefined 类型只有一个值,即特殊的 undefined 。下面有两个例子,注意尚未定义的变量。

var message;

//下面这个变量没有声明
//var age;

alert(message);  //"undefined"
alert(age);      //产生错误

  对于未声明过的变量,只能执行一项操作,即使用 typeof 操作符检测其数据类型。结果也会返回 undefined 值。来看下面的例子:

var message;

//下面这个变量没有声明
//var age;

alert(typeof message);  //"undefined"
alert(typeof age);      //"undefined"

Null 类型

  Null 类型只有一个值,即特殊的 null 。逻辑上来讲,null 值表示一个空对象指针,这也是 typeof 操作符检测 null 值会返回 "object" 的原因。
  实际上, undefined 值是派生自 null 值的,因此 ECMA-262 规定他们的相等性测试要返回 true 。

console.log(null == undefined);  //true

Boolean 类型

  Boolean 类型是 ECMAScript 中使用的最多的一种类型,该类型只有两个字面值:true 和 false 。这两个值与数字值不是一回事,因此 true 不一定等于 1 ,false 也不一定等于 0 。
  转型函数 Boolean( ) 可以将其他值转换为对应的 Boolean 值,下表给出了各种数据类型以及对应转换规则 。

数据类型 转换为 true 的值 转换为 false 的值
Undefined / undefined
Boolean true false
Number 任何非 0 数字值 0 和 NaN
String 任何非空字符串 空字符串
Object 任何对象 null

Number 类型

String 类型

Object 类型

  Object 的每个实例都具有下列属性和方法:

  • constructor :用于创建当前对象的函数。
  • hasOwnProperty ( propertyName ) :用于检查给定的属性是否在当前对象实例中是否存在(而不是在实例的原型中)。参数必须以字符串形式指定。
  • isPrototypeOf ( object ) :用于检查传入的对象是否是当前对象的原型。
  • propertyIsEnumerable ( propertyName ) :用于检查给定的属性是否能够用 for-in 语句来枚举。
  • toLocaleString( ) :返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString( ) :返回对象的字符串表示。
  • valueOf( ) :返回对象的字符串、数值或布尔值表示。通常与 toString( ) 方法的返回值相同。

   从技术角度讲,浏览器环境中的对象,比如 BOM 和 DOM 中的对象,都属于宿主对象,因为他们是由宿主实现提供和定义的。ECMA-262 不负责定义宿主对象,因此宿主对象可能不会继承 Object 。