4. 数据类型

数字(Number)类型

和其他编程语言不同,Javascript不区分整数值和浮点数值;Javascript中所有数字均用浮点数值标识。

var x1=34.00;      // 使用小数点来写
var x2=34;         // 不使用小数点来写
var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

1.数值范围
最大值是± 1.7976931348623157e+308,最小值是±5e- 324;如果使用了超过此范围的整数则无法保证低位数字的精度,需要注意的是,Javascript中实际的操作都是基于32位整数。

比较有意思的一个例子:

var a=0.1;
var b=0.2;
console.log(a+b)  // 结果返回: 0.30000000000000004 

/*
IEEE单精度格式具有24 位有效数字精度(包含符号号),并总共占用32 位。
IEEE双精度格式具有53 位有效数字精度(包含符号号),并总共占用64 位。
十进制0.1
原码:0.00011001100110011…(循环0011)   
补码:0.00011001100110011001100110011001100110011001100110011001  

而十进制0.2  
原码:0.0011001100110011…(循环0011)  
补码:0.00110011001100110011001100110011001100110011001100110011  

那么两者相加得:      
0.00011001100110011001100110011001100110011001100110011001 +
0.00110011001100110011001100110011001100110011001100110011  =
0.01001100110011001100110011001100110011001100110011001100 
转换成10进制之后得到:0.30000000000000004   
*/

2. NaN
NaN ,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。
isNaN() 函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。


alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)

字符串(String)类型

String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串可以由双引号(”)或单引号(’)表示,因此下面两种字符串的写法都是有效的:

var firstName = "Nicholas";
var lastName = 'Zakas';

String 数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符。这些字符字面量如下表所示:

字 面 量含 义
\n换行
\t制表
\b空格
\r回车
\f进纸
\\斜杠
\’单引号( ‘ ),在用单引号表示的字符串中使用。例如: ‘He said, \’hey.\”
\”双引号( ” ),在用双引号表示的字符串中使用。例如: “He said, \”hey.\””
\xnn以十六进制代码 nn 表示的一个字符(其中 n 为0~F)。例如, \x41 表示 “A”
\unnnn以十六进制代码 nnnn 表示的一个Unicode字符(其中 n 为0~F)。例如, \u03a3 表示希腊字符Σ

Javascript 字符串直接量必须写在一行中,如需拆分成数行,每行必须以反斜线(\)结束。

var str="This is \
 long string"

布尔(Boolean)类型

布尔(逻辑)只能有两个值:true 或 false。

 var x=true;
 var y=false;

var message = "Hello world!";
if (message){
alert("Value is true");
}

注意: Boolean 类型的字面值 true 和 false 是区分大小写的。 True 和 False 都不是 Boolean 值,只是标识符。
各种数据类型及其对应的Boolean转换规则:

数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串“” (空字符串)
Number任何非零数字值(包括无穷大)0和 NaN
Object任何对象null
Undefinedn/aundefined

数组(Array)类型

数组(array)是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,成为索引。数组的值可以是任意类型。

1.创建数组

var cars=new Array();
 cars[0]="Saab";
 cars[1]="Volvo";
 cars[2]="BMW";
var cars=new Array("Saab","Volvo","BMW");
var cars=["Saab","Volvo","BMW"]; 

2.数组元素的读和写
使用[ ]操作符来访问数组中的一个元素。

var a = ["world"]; //从一个元素的数组开始
var value = a[0];  //读第0个元素
a[1] = 3.14        //写第1个元素

注:javascript数组的索引只能是数字(其他语言可以是字符串,例如PHP $arr[‘username’])

3.稀疏数组
稀疏数组就是包含从0开始的不连续索引的数组。如果数组是稀疏的,length熟悉值大于元素的个数。

a = new Array(5);  // 数组没有元素,但是a.length是5
a = [];            // 创建一个空数组,length = 0
a[1000] = 0;       // 赋值添加一个元素,但是设置length为1001

也可以使用delete产生稀疏数组

4.数组的长度
每个数组都有一个length属性,代表数组中元素的个数。

[].length      // => 0 数组没有元素
['a','b','c']  // => 3 最大的索引为2,length为3

可以使用length属性来删除数组元素:


var a = [1,2,3,4,5];  // 创建一个数组
a.length = 3;         // 现在a为 [1,2,3]
a.length = 0;         // 删除所有元素,a为[]

5.数组元素的添加和删除
为新索引赋值:


var a = [];         // 开始是一个空数组
a[0] = "zero";      // 然后向其中添加元素
a[1] = "one";

使用push()方法在数组末尾增加一个或多个元素:


var a = [];           // 创建一个空数组
a.push("zero");       // 在末尾添加一个元素
a.push("one","two");  // 再添加两个元素

使用delete运算符删除数组元素:


var a = [1,2,3];           // 创建一个数组
delete a[1];               // a在索引1的位置不再有元素
1 in a;                    // =>false 数组索引1并未在数组中定义
a.length                   // =>3 delete操作并不影响数组长度

6.数组遍历
使用for循环遍历数组元素:


var arr = [1,2,3,4];
for(var i = 0; i < arr.length; i++ ){
  document.write(arr[i]+"\n");
}

使用for/in循环遍历数组元素:


var arr = [1,2,3,4];
for(var index in arr ){
  document.write(arr[index ]+"\n");
}

对象(Object)类型

ECMAScript 中的对象其实就是一组数据和功能的集合。
1.通过 new 操作符来创建对象。创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。

 var o = new Object();

2.直接赋值创建对象;由花括号分隔,在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:


var person={
    firstname : "John",
    lastname  : "Doe",
    id        :  5566
};

对象属性有两种寻址方式:


name=person.lastname;
name=person["lastname"]; 

null和undefined

Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null 。null 是Javascript的关键字,它表示一个特殊值,常用来描述“空值”。typeof结果返回“object”。
Undefined 类型只有一个值,即特殊的 undefined 。 undefined是预定义的全局变量,它不是关键字;它的定义是“未定义”。typeof结果返回“undefined”。
null和undefined都是表示“值的空缺”,两者可以互换。两者都不包含任何方法和属性。

null == undefined   // true
null === undefined  // false

你可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺;而null是表示程序级的、正常的或在意料之中的值的空缺。

typeof 操作符

typeof 检测给定变量的数据类型

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

下面是几个使用 typeof 操作符的例子:


var message = "some string";
alert(typeof message);      // "string"
alert(typeof(message));     // "string"
alert(typeof 95);           // "number"
评论

0 条评论