1. 数据类型
分为原始类型和引用类型
原始类型分为五大类 数值型,字符串型,布尔型,未定义型,空
(1) 数值型
分为整型和浮点型
检测数据类型 typeof
(2) 字符串型
被引号包含的数据就是字符串,不区分单双引号
查看任意一个字符的unicode码
console.log(“焱”.charCodeAt());
(3) 布尔型
只有两个值,分别为true 和false 表示真或假
常用用于两个状态的数据,例如是否登录,是否注册,是否在线。
(4) 未定义型
只有一和值 undefined,声明了变量未赋值则结果为undefined
(5) 空
只有一个值null‘,是对象型(object),常用于应用类型中’
2数据类型的转换
1) 隐式转换
在运算过程中自动转换
数字+字符串 数字转成字符串
var t1 = '3'+5;
//35.
数字+布尔
'3'+ true
//'3true'
布尔型+字符串
true + 5
//6 number
var a=7,b=true,c='3';
console.log(a+b+c);//'83'
console.log(b+c+a);//true37
console.log(c+a+b);//37true
声明多个变量:姓名,性别,爱好
var name = ‘韩信’;
var sex = ‘男’;
var like= ‘打架征服别国’;
console.log(‘姓名’+name + “性别” + sex + ‘爱好’ + like);
加法运算
字符串的拼接
其它运算符( _ * / )的转换,都是隐式转换为数值型
NAN: Not a Number 不是一个数字,在将一个数据转换为数值类型的时候,如果无法转换成功则返回NAN。
2) 强制转换
(1) 强制转为数值型
在隐式转换为数值的时候,也是自动调用这个函数
Number(true)//1
Number(false)//0
Number(’5’)//5
Number(’5a’)//NAN
Number(undefined)//NAN
Number(Null//0)
(2) 强制转为整型
ParseInt()
常用于将小数或字符转为整型 如果字符串开头是非数字结果是NAN;其它类型都是返回NAN
var p1 = parseInt(3.64);//3
var p2 = parseInt('5a');//5
var p3 = parseInt('a5');//NAN
var p4 = parseInt(true);//NAN
var p5 = parseInt(undefined);//NAN
var p6 = parseInt(null);//NAN
(3) 强制转为浮点型
ParseFloat()
常用于将字符串转为浮点型
var o1 = parseFloat('3.14');//3.14
var o2 = parseFloat('5a');//5
var o3 = parseFloat('a5');//NAN、
(4) 将数值和布尔值转换为字符串
ToString()
var num =5;
//将5转换为字符串,新成一个新的数据,原来的num不变
num1 = num.toString();
console.log(num,typeof num);//5
console.log(num1,typeof num1);//'5'
- 运算符
表达式:由数据或者有运算符连接的操作数据组成的格式
分为算术运算符,比较运算符,逻辑运算符,位运算符,赋值运算符,三目运算符
(1) 算术运算符
-
-
- / % ++ –
% 取余
++ 自增 原来的基础之上加1
– 自减 原来的基础之上减1
var b =a++;//先把当前a的值赋值给b,在执行自增
var c =++d;//先让b执行自增,在赋值给c 和d的值一样
- / % ++ –
-
自增自减也具有讲数据隐式转换为数值型
var n=‘5’;
n++;
console.log(n);//6
(2) 比较运算符
< 、> 、 >=、 <=、 ==、 !=、 ===、
‘3’>’10’ //false
数值和字符串比较,字符串隐式转换为数值
‘3’>’10’// true
字符串比较,比较的是首个字符的Unicode码
//console.log(3>'10a');//false
//console.log(3<'10a');//false
//console.log(3=='10a');//false
//console.log(NAN==NAN);//false
任何值和NAN比较都是false,两个NAN比较也是false,比较 != !==是true
(3) 逻辑运算符
& &
逻辑与(并且)关联的两个条件都是true结果才是是true,否则false
| |
逻辑或(或者)关联两个条件有一个是true结果是true
!
逻辑非(反)
短路
逻辑
&& 当第一个条件为false,不在执行第二个条件
| | 放第一个条件为true,不再执行第二个条件
短路逻辑无需关注最终的结果是true还是false 关键在于第二个条件十分执行
4. 位运算符(二进制)
模拟计算机底层的运算过程,先把数据转成二进制,然后运算,当运算完再转成十进制
1 2 3 4 5 6 7
1 10 11 100 101 110 111
& 按位与 上下两位比较,都是1结果是1,否则为0
| 按位或,上下两位比较,含有1结果为1,否则为0
5. 运算符
(1) 赋值运算符
= += *= /= %= ….
运算赋值:先执行前边的运算,在执行后面的赋值
(2) 三目运算符
一目运算符:由一个运算符连接的一个表达式或者数据 ! ++ –
二目运算符:由一个运算符连接的两个个表达式或者数据 = < +1 %
三目运算符:由两个运算符连接的三个表达式或数据
条件表达式? 表达式1:表达式2
如果表达式为true,执行1
如果表达式为false,执行2
6. 浏览器函数
alect() :弹出警示框
prompt():弹出输入框;保存的为字符串型,点击取消得到null
程序 = 数据+算法
程序的执行方式分为顺序执行,选择执行,循环执行
7.流程控制
(1) if语句
满50减30
If( 表达式){
语句块儿
}
以下5中数据作为条件表达式,隐式转换为false
0、’’、NAN、undefined、null。
(2) if else 否则
If(条件表达式){
语句1
}else{
语句2
}
(3)else if{
}
var money = prompt('输入数值')
if(money<=0){
alert('无效金额');
}else if(money<100000){
alert('普通用户');
}else if (money<=1000000){
alert('优质用户')
}else if (money<=10000000){
alert('精品用户')
}else if (money>=100000000){
alert('钻石用户')
}else{
alert('欢迎光临')
};
(4)switch(表达式){
case 值1://表达式保存的值是1
语句块1
bteak; //结束,不在往后执行
case 值n:
语句块n
break;
default://以上表达式和每一个值比较都是false
语句块n+1
}
var city='宜宾';
switch (city)
{
case '四川':
console.log('火锅');
break;
case '重庆':
console.log('小面');
break;
case '山西':
console.log('醋');
break;
default:
console.log('其余城市还未开通');
}
是一种特殊的多项分支语句
Switch 中的表达式和case后的值比较的时候,使用的是全等于,要求值和类型都相同 对比if-else嵌套和swicth-case的区别 两者都是用于多项分支 If-else在条件表达式中既可以使用等于,也可以用不等于,或者其他的运算符 Switch-case只能使用全等于的比较 If-else 使用的范围更广,switch-case结构更清晰,执行效率相对高