JavaScript中有5种简单数据类型number,string,boolean,undefined,null和一种复杂数据类型object,object本质是由一组无序的键值对组成的。
数值型:Number
Number 类型 可以用来表示整数和浮点数值。也支持各种数值类型,包括八进制,十六进制等,但最常用的还是十进制。
所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。
JavaScript 能够表示的最小数值保存在 Number.MIN_VALUE 中——在大多数浏览器中,这个值是 5e-324;能够表示的最大数值保存在Number.MAX_VALUE 中——在大多数浏览器中,这个值是 1.7976931348623157e+308。如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的 Infinity 值。
NAN是Number类型中一个特殊的数值,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
比如:var a=”a”; a=a-1; 此时输出a的值就为NAN。
NaN 与任何值都不相等,包括 NaN 本身。
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false( 10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)
这个例子测试了 5 个不同的值。测试的第一个值是 NaN 本身,结果当然会返回 true。然后分别测试了数值 10 和字符串"10",结果这两个测试都返回了 false,因为前者本身就是数值,而后者可以被转换成数值。但是,字符串"blue"不能被转换成数值,因此函数返回了 true。由于 Boolean 值 true可以转换成数值 1,因此函数返回 false。
字符串:String
字符串可以由双引号(")或单引号(')表示。字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
常用转义字符:
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号('),在用单引号表示的字符串中使用。例如: 'He said, \'hey.\''
\" 双引号("),在用双引号表示的字符串中使用。例如: "He said, \"hey.\""
布尔:Boolean
该类型只有两个字面值: true 和 false。
需要注意的是,Boolean 类型的字面值 true 和 false 是区分大小写的。也就是说,True 和 False(以及其他的混合大小写形式)都不是 Boolean 值,只是标识符。
以下数据在转换成布尔值时都为false。
1,false
2,””(空字符串)
3, 0和NAN
4,null
5,undefined
未定义:undefined
Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其赋值时,
这个变量的值就是 undefined 。
空:null
Null类型也只有一个值,这个值就是null。如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。这样一来,只要直接检查 null 值就可以知道相应的变量是否已经保存了一个对象的引用。
实际上, undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:
alert(null == undefined); //true
尽管 null 和 undefined 有这样的关系,但它们的用途完全不同。如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为 undefined,可是同样的规则对 null 却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值。这样做不仅可以体现 null 作为空对象指针的惯例,而且也有助于进一步区分 null 和 undefined。
在学习完6种数据类型之后有必要了解一下typeof操作符。
Typeof操作符用于检测给定变量的数据类型。对一个值使用typeof操作符可能会返回一下六种值。
1,如果这个值未定义或未赋值,返回”undefined”
2,如果是数值型,则返回”number”
3,如果是字符串,返回”string”
4,如果是布尔型,返回”boolean”
5,如果是对象或null,返回”object”
6,如果是函数,返回”function”.
这几种数据类型之间也是可以相互转换的,有时候需要将数字形式的字符串转换成数值进行运算,数据类型的转换请查看之前的博客。
总结完了简单数据类型,我们再看看复杂数据类型,也称为引用数据类型。
对象Object:
JavaScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象,如下所示:
var o = new Object();
Object 的每个实例都具有下列属性和方法。
1,constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。
2,hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例
的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例
如: o.hasOwnProperty("name"))。
3, isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型(第 5 章将讨论原
型)。
4,propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句,(本章后面将会讨论)来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
5,toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
6,toString():返回对象的字符串表示。
7, valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值
相同。
JavaScript提供了很多原生引用类型,如object类型,Array类型,Date类型,RegExp类型,Function类型等。
1,object类型
我们看到的大多数引用类型值都是 Object 类型的实例 。
创建 Object 实例的方式有两种。第一种是使用 new 操作符后跟 Object 构造函数,如下所示:
var person = new Object();
person.name = "Nicholas";
person.age = 29;
另一种方式是使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。下面这个例子就使用了对象字面量语法定义了与前面那个例子中相同的person 对象:
var person = {
name : "Nicholas",
age : 29
};
2,Array类型
数组对象是使用单独的变量名来存储一系列的值。除了 Object 之外, Array 类型恐怕是 JavaScript 中最常用的类型了。而且, JavaScript 中的数组与其他多数语言中的数组有着相当大的区别。虽然 JavaScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是, JavaScript 数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象。
创建数组的基本方式有两种。
第一种是使用 Array 构造函数,如下面的代码所示。
var colors = new Array();
如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量,而该数量会自动变成 length属性的值。例如,下面的代码将创建 length 值为 20 的数组。
var colors = new Array(20);
也可以向 Array 构造函数传递数组中应该包含的项。以下代码创建了一个包含 3 个字符串值的数组:
var colors = new Array("red", "blue", "green");
创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下所示:
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
var names = []; // 创建一个空数组
ECMAScript 5 新增了 Array.isArray()方法。这个方法的目的是最终确定某个值到底是不是数组,这个方法的用法如下。
if (Array.isArray(value)){
//对数组执行某些操作
}
支持 Array.isArray()方法的浏览器有 IE9+、 Firefox 4+、 Safari 5+、 Opera 10.5+和 Chrome。
关于操作数组的方法比较多,后续再做专题介绍。
3,Date类型
Date 类型提供了有关日期和时间的信息,包括当前日期和时间以及相关的计算功能;
4,RegExp类型
RegExp 类型是 ECMAScript 支持正则表达式的一个接口,提供了最基本的和一些高级的正表
达式功能。 这部分内容也比较多,后续单独总结。
5,Function类型
由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。函数通常是使用函数声明语法定义的,如下面的例子所示。
function sum (num1, num2) {
return num1 + num2;
}
这与下面使用函数表达式定义函数的方式几乎相差无几。
var sum = function(num1, num2){
return num1 + num2;
};
6,Math对象
Math是js中的一个对象,它提供了很多关于数学计算方面的方法.
需要记住的一些方法是:
1.Math.round(数字) :将数字进行四舍五入以后的整数返回
2.Math.random() :返回一个0~1的随机数
3.Math.ceil(数字) :将数字向上取整并返回
4.Math.floor(数字) :将数字向下取整并返回