JavaScript变量及数据类型
变量
ECMAScript的变量是松散类型的,表现为:
- 声明变量时,不用指定数据类型
- 同个变量可以引用不同的数据类型
变量声明
使用var
操作符声明变量
var variableName; //由于未初始化,变量值为undefined
变量初始化
当我们声明一个变量但未初始化时,变量的默认值是undefined
var variableName = value;
全局变量和局部变量
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"
须要注意的是,任何对象和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的特点是:
- 任何涉及NaN的操作都返回
NaN
NaN
与任何值都不相等,包括NaN
本身
isNaN
函数对于任何不能被Number()
转换为数值的参数,返回true
数值转换
-
Number()
函数数据类型 结果 Number 简单的传入和返回 Null 0 Undefined NaN Boolean 0或1 String 空字符串返回0;满足数字格式的字符串返回对应的数字;其他情况返回NaN -
parseInt()
函数专门用于将字符串解析为整数。它会尽可能的将字符串(或第一个整数子序列)转换为整数
-
parseFolat()
函数专门用于将字符串解析为浮点数。它会尽可能的将字符串(或第一个浮点数子序列)转换为浮点数
String
Number
、Boolean
、Object
、String
的toString
方法可以将其本身转换为字符串。
String()
函数可以将任意类型转换为字符串,转换时有toString
方法的调用toString
方法,null
返回"null"
,undefined
返回"undefined"
Object
通过new
操作符创建对象:
object = new Object()
-
Constructor
属性保存用于创建当前对象的构造函数
-
hasOwnProperty(propertyName)
检定属性在当前实例对象中,而不是实例的原型中
-
propertyIsEnumerable(propertyName)
检定给定的属性是否能使用for-in语句
-
toString()
返回对象的字符串表示
-
valueof()
返回对象的字符串、数值或布尔值表示,通常与
toString()
方法的返回值相同