以下内容均整理自:廖雪峰老师的JS教程
非常感谢廖老师!
统一使用var
声明即可,JS会自动判断类型。
数据类型
1. Number
JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:
123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
2. 字符串
字符串是以单引号’或双引号"括起来的任意文本,无结束字符,比如:字符串'abc'
只有a
,b
,c
这3个字符。
3. 布尔值
一个布尔值只有true
、false
两种值
4. null
null
表示一个“空”
的值,它和0
以及空字符串''
不同,0
是一个数值,''
表示长度为0的字符串,而null
表示“空”
。
5. undefined
表示“未定义”
,即变量未赋值之前的状态。仅仅在判断函数参数是否传递的情况下有用。
6. 数组
JavaScript的数组**可以包括任意数据类型**。
另外有两种创建数组方式:
var arr =[1,2,'哈哈',null,true] ;
new Array(1,2,'哈哈',null,true);
7. 对象
JavaScript的对象是一组由**键-值**组成的无序集合,例如:
var person = {
name: 'Bob',
age: 20,
tags: ['js', 'web', 'mobile'],
city: 'Beijing',
hasCar: true,
zipcode: null
};
要获取一个对象的属性,我们用对象变量.属性名的方式:
person.name; // 'Bob'
person.zipcode; // null
运算符
运算符大致与Java的运算符都一致,包括短路运算符等操作。不过,也有一些需要注意的:
第一种是==
比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===
比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==
比较,始终坚持使用===
比较。
如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