一、 数据类型
分为原始类型和引用类型
原始类型分为数值型,字符串型,布尔型,未定义型,空
(1) 数值型
分为整形和浮点型
十进制 1 2 3 4 5 6 7 8 9 10
八进制 以0开头
1 2 3 4 5 6 7 10 11 12
十六进制 以0x开头 AF表示1015 不区分大小写
1 2 3 4 …………… 9 A B C D E F 10
314.15
31.415e1
console.log(typeof XX); 检测数据的类型
(2) 字符串型
被引号所包含的数据
查看任意一个字符的Unicode码
‘a’.charCodeAt()
(3) 布尔型
只有两个值,分别是true和false,代表真或者假
通常用于存储只有两个数据的值,例如是否登录,是否为会员…
比较运算的结果也会得到布尔型的值
(4) 未定义型
只有一个值 undefined,声明变量未赋值结果为undefined
(5) 空
只有一个值null , 常和引用类型的数据一起使用
二、 数据类型转换
分为隐式转换和强制转换
(1) 隐式转换
在运算过程中,自动发生的转换
- 数值型+字符串型 数值转为字符串
2+‘3’ -> ‘23’
加号(+)的作用
执行数值间的加法运算
执行字符串间的拼接 - 数值型+布尔型 布尔型转为数值 true->1 false->0
2+true ->3 - 字符串型+布尔型 布尔型转为字符串
‘2’ + true -> ‘2true’
练习:查看一以下程序的运行结果
var a=1,b=true,c=‘2’;
console.log(a+b+c); //2+‘2’
console.log(b+c+a); //‘true2’+1
console.log(c+a+b); //‘21true’
NaN : Not a Number 不是一个数字
将数据转数值的时候,没有成功的转为数值,返回NaN
NaN和任何值执行运算结果还是NaN
隐式转换为数值会自动调用Number函数
(2) 强制转换
- 强制转换为数值型
Number()
Number(‘2’) //2
Number(‘2a’) //NaN
Number(‘true’) //1
Number(undefined) //NaN
Number(null) //0 - 强制转为整型
通常用于将字符串和小数转为整型 其他转换返回NaN
parseInt()
parseInt(3.14) //3
parseInt(‘6.7a’) //6
parseInt(‘a6.7’) //NaN
如果转小数为整型就是去除小数点后的部分,如果转字符串型会取出开头部分的整数,如果开头为非数字则返回NaN - 强制转为浮点型
通常用于将字符串转为浮点型,其它转换也是返回NaN
parseFloat()
parseFloat(‘3a’); //3
parseFloat(‘3.14a’); //3.14
parseFloat(‘a3.14’); //NaN - 数值和布尔型强制转为字符串(了解)
var n=10;
var s=n.toString(2) //转字符串同时,可以设置进制
(3) 运算符
表达式:由数据或者运算符连接的操作数据组成的形式
运算符分为算数运算符,比较运算符,逻辑运算符,位运算符(了解),赋值运算符,三目运算符
- 算术运算符
-
-
- / % ++ –
% 取余
++ 自增,在原来基础之上加1
– 自减,在原来基础之上减1
var n1=2;
var n2=n1++; //把n1的值赋给n2,然后n1在执行自增
var n3=5;
var n4=++n3; //先让n3的值执行自增,然后再把自增结果赋给n4
练习:查看以下程序运行结果
var a=10;
var b=a–; //a=9,b=10
var c=–a; //a=8,c=8
console.log(b+c); //a=8,b=10,c=8 b+c=18
- / % ++ –
-
- 比较运算符
< >= <= ==(等于) !=(不等于) =(全等于) !(不全等于)
== 等于 只比较值是否相同,可能会发生数据类型转换
===全等于,比较值和类型是否相同,先比较类型,如果类型相同再去比较值
=== 推荐用法
如果运算符两端数字类型中只有一个数据则另一个隐式转换为数值型
如果两个字符串比较,比较的是Unicode码
练习:
console.log(3>‘10a’);//false
console.log(3<‘10a’);//false
console.log(3==‘10a’);//false
console.log(NaN==NaN);//false
NaN和任何值比较(包括NaN本身) > < >= <= == ===结果都是false
3) 逻辑运算符
&& 逻辑与 and 关联的两个条件都是true结果是true,否则false
|| 逻辑或 or 关联的两个条件有一个true结果是true,否则false
! 逻辑非 取反
短路逻辑
&& 当第一个条件为false时,不再执行第二个条件
|| 当第一个条件为true时,不再执行第二个条件
短路逻辑关注点不再是整体的true还是false,而是第二个条件是否执行
练习:查看以下程序是否报错
var a=5;
a>10 && console.log(b);
a<6 || console.log©;