变量

ECMAScript的变量是松散类型的,表现为:

  • 声明变量时,不用指定数据类型
  • 同个变量可以引用不同的数据类型

变量声明

使用var操作符声明变量

var variableName; //由于未初始化,变量值为undefined
var variableName; //由于未初始化,变量值为undefined

变量初始化

当我们声明一个变量但未初始化时,变量的默认值是undefined

var variableName = value;
var variableName = value;

全局变量和局部变量

var name = "weixia";
age = 24;
function sayName() {
    var name;
    alert(name);
}

sayName();
alert(name);
alert(age);
var name = "weixia";
age = 24;
function sayName() {
    var name;
    alert(name);
}

sayName();
alert(name);
alert(age);

上面代码打印:

undefined
weixia

sayName函数内部代码块定义一个同名局部变量name,它具有局部作用域,生命周期从定义处开始,到右花括号结束。

行1中声明的name具有全局作用域,它会自动被归于windows对象的命名空间。

行2age是全局变量,具有全局作用域,它会自动被归于windows对象的命名空间。

数据类型

ECMAScript数据类型:

  • 五种基本类型
  • Undefined
  • Null
  • Boolean
  • Number
  • String
  • 一种复杂类型
  • Object
  • ECMAScript不支持自定义类型,所有值都是上述6种数据类型之一

typeof

typeof是一个操作符,不是函数,它用于判断数据类型,返回值是字符串

typeof 24;  // "number"
typeof("Hello");    // "string"
typeof null;    // "object"
typeof 24;  // "number"
typeof("Hello");    // "string"
typeof null;    // "object"

须要注意的是,任何对象和null都返回"object"

Undefined

Undefined类型,实际取值只有一个——undefined

当变量未初始化时,默认值为undefined

Null

Null类型表示空的对象引用,实际取值只有一个——null

通常用作要储存对象变量的初始值

Boolean

Boolean类型实际取值有两个:

  • true
  • false

其他数据类型可以转换为Boolean类型,转换结果取决于待转换数据的数据类型和实际取值

数据类型

结果为true的实际取值

结果为false的实际取值

Boolean

true

false

String

非空字符转

空字符串

Number

任何非零数(包括无穷大)

0或NaN

Object

非null对象

null

Undefined

undefined

Number

Number类型的实际取值有:

  • 整数
  • 浮点数
  • Infinity
  • NaN

NaN的特点是:

  1. 任何涉及NaN的操作都返回NaN
  2. NaN与任何值都不相等,包括NaN本身

isNaN函数对于任何不能被Number()转换为数值的参数,返回true

数值转换
  • Number()函数

数据类型

结果

Number

简单的传入和返回

Null

0

Undefined

NaN

Boolean

0或1

String

空字符串返回0;满足数字格式的字符串返回对应的数字;其他情况返回NaN

  • parseInt()函数
    专门用于将字符串解析为整数。它会尽可能的将字符串(或第一个整数子序列)转换为整数
  • parseFolat()函数
    专门用于将字符串解析为浮点数。它会尽可能的将字符串(或第一个浮点数子序列)转换为浮点数

String

NumberBooleanObjectStringtoString方法可以将其本身转换为字符串。

String()函数可以将任意类型转换为字符串,转换时有toString方法的调用toString方法,null返回"null",undefined返回"undefined"

Object

通过new操作符创建对象:

object = new Object()
object = new Object()
  • Constructor属性
    保存用于创建当前对象的构造函数
  • hasOwnProperty(propertyName)检定属性在当前实例对象中,而不是实例的原型中
  • propertyIsEnumerable(propertyName)检定给定的属性是否能使用for-in语句
  • toString()返回对象的字符串表示
  • valueof()返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同