数据类型和变量数组
数据类型
计算机顾名思义就是能够作数学计算的机器,所以,计算机程序理所固然地能够处理各类数值。可是,计算机能处理的远不止数值,还能够处理文本、图形、音频、视频、网页等各类各样的数据,不一样的数据,须要定义不一样的数据类型。在JavaScript中定义了如下几种数据类型:函数
1.Number设计
JavaScript不区分整数和浮点数,统一用Number表示,如下都是合法的Number类型:3d
123; // 整数123 0.456; // 浮点数0.456 1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5 -99; // 负数 NaN; // NaN表示Not a Number,当没法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
计算机因为使用二进制,因此,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等,它们和十进制表示的数值彻底同样。code
Number能够直接作四则运算,规则和数学一致:视频
1 + 2; // 3 (1 + 2) * 5 / 2; // 7.5 2 / 0; // Infinity 0 / 0; // NaN 10 % 3; // 1 10.5 % 3; // 1.5
注意%是求余运算。索引
2.字符串ip
字符串是以单引号'或双引号"括起来的任意文本,好比'abc',"xyz"等等。请注意,''或""自己只是一种表示方式,不是字符串的一部分,所以,字符串'abc'只有a,b,c这3个字符。字符串
3.布尔值数学
布尔值和布尔代数的表示彻底一致,一个布尔值只有true、false两种值,要么是true,要么是false,能够直接用true、false表示布尔值,也能够经过布尔运算计算出来:
true; // 这是一个true值 false; // 这是一个false值 2 > 1; // 这是一个true值 2 >= 3; // 这是一个false值
&&运算是与运算,只有全部都为true,&&运算结果才是true:
true && true; // 这个&&语句计算结果为true true && false; // 这个&&语句计算结果为false false && true && false; // 这个&&语句计算结果为false
||运算是或运算,只要其中有一个为true,||运算结果就是true:
false || false; // 这个||语句计算结果为false true || false; // 这个||语句计算结果为true false || true || false; // 这个||语句计算结果为true
!运算是非运算,它是一个单目运算符,把true变成false,false变成true:
! true; // 结果为false ! false; // 结果为true ! (2 > 5); // 结果为true
布尔值常常用在条件判断中,好比:
var age = 15; if (age >= 18) { alert('adult'); } else { alert('teenager'); }
4.比较运算符
当咱们对Number作比较时,能够经过比较运算符获得一个布尔值:
2 > 5; // false 5 >= 2; // true 7 == 7; // true
实际上,JavaScript容许对任意数据类型作比较:
false == 0; // true false === 0; // false
要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:
第一种是==比较,它会自动转换数据类型再比较,不少时候,会获得很是诡异的结果;
第二种是===比较,它不会自动转换数据类型,若是数据类型不一致,返回false,若是一致,再比较。
因为JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
另外一个例外是NaN这个特殊的Number与全部其余值都不相等,包括它本身:
NaN === NaN; // false
惟一能判断NaN的方法是经过isNaN()函数:
isNaN(NaN); // true
最后要注意浮点数的相等比较:
1 / 3 === (1 - 2 / 3); // false
这不是JavaScript的设计缺陷。浮点数在运算过程当中会产生偏差,由于计算机没法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
5.null和undefined
null表示一个“空”的值,它和0以及空字符串''不一样,0是一个数值,''表示长度为0的字符串,而null表示“空”。
在其余语言中,也有相似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。可是,在JavaScript中,还有一个和null相似的undefined,它表示“未定义”。
JavaScript的设计者但愿用null表示一个空的值,而undefined表示值未定义。事实证实,这并无什么卵用,区分二者的意义不大。大多数状况下,咱们都应该用null。undefined仅仅在判断函数参数是否传递的状况下有用。
6.数组
var arr = [1, 2, 3.14, 'Hello', null, true]; arr[0]; // 返回索引为0的元素,即1 arr[5]; // 返回索引为5的元素,即true arr[6]; // 索引超出了范围,返回undefined