一、数据类型
分为原始类型和引用类型
原始类型分为数值型、字符串型、布尔型、未定义型、空
(1)数值型—— numbre
整型
- 1 2 3 4 5 6 7 8 9 10
- 8进制
- 1 2 3 ... 7 10 11 12
- 16进制 a=10 f=15
- 1 ..... 9 a ... f
- 8进制以0开头的数字, 例如010
- 16进制以0x开头的数字,例如0xf,不区分大小写
- 浮点型
- 3141.5e-1
- 314.15
- 31.415e+1
- 3.1415e+2
-
(2)字符串型——string
- 被引号包含的数据就是字符串型,不区分单双引号
- 查看任意一个字符的,编码(Uincode)
- 't'.charCodeAt()
- 查看任意一个字符的,编码(Uincode)
- 被引号包含的数据就是字符串型,不区分单双引号
(3)布尔型——boolean
- 只有两个值,分别是crue和false ,代表真和假
- 用于保存只有两个值的数据,一些运算符的结果也是布尔型的
(4)未定义型
- 只有一个值undefined
- 声明了变量未赋值则为undefined,代表空值
(5)空
- 只有一个值 null , 和引用类型数据一起使用
typeof 用于检测数据类型 数值型 / 字符串型/ 布尔型 /未定义型 /空 'number' / 'string' /boolean' /undefaned' / 'object' |
二、数据类型的转换
分为隐式转换和强制转换
(1)隐式转换
运算过程中自动产生的转换
①数字+字符串 数字会转换成字符串
2+'3' //'23'
②数值+布尔型 布尔型转为数字 true –>1 false->0
2+true //3
2+false //2
③字符串+布尔型 布尔型转为字符串
'2'+true //'2true'
加号(+)的作用 数字之间的加法运算 字符串的拼接 |
NaN Not a Numter , 不是一个数字,这个值是转数值失败的结果,NaN(非数值)和任何数值执行加减乘除(+、-、*、/)结果还是NaN
隐式转数值为数值自动的调用函数Number
(2)强制转换
①强制转换为数值
Number();
var n1=Number('2'); //2 Number('2a'); //NaN Number(true); //1 Number(false);//0 Number(undefined); //NaN Number(null); //0 |
②强制转换为整型
parseInt()
用于将字符串和小数强制转换为整型,其他类型转换结果为NaN
parseInt(3.94); //3 parseInt('2.58'); //2 parseInt('6.18a'); //6 parseInt('a6.18'); //NaN 规律:将一个字符串转为整型的时候,如果是非数字返回NaN,否则返回开头的整数部分 |
③强制转换为浮点型
parseFloat()
将字符串转为浮点型
parseFloat('3a'); //3 parseFloat('3.14'); //3 parseFloat('a3.14'); //NaN |
④将数值和布尔型强制转换为字符串(了解)
toString()
var num=2; //将num保存的值转换为字符串 num.toString(); //2 |
三、运算符
表达式:由数据或者运算符连接的数据组成的格式称作表达式
运算符分为算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、三木运算符
(1)算术运算符
+ - * / % ++ --
%(取余)
++(自增) 让一个变量在原来的基础上加1
--(自减) 让一个变量在原来的基础上减1
自增 var b1=3; //先把b1的值赋给b2,然后b1再自增 var b2=b1++; console.log(b1,b2); var b3=3; //先让b3自增,然后再把结果赋值给b4 var b4=++b3; //4 4 console.log(b3,b4); |
(2)比较运算符
> < >= <= ==(等于) != ===(全等于) !==(不全等于)
== 等于: 比较值是否相同,可能会产生隐式转换
===(全等于): 先比较类型,再比较值,只有两个都相同才是true
3>'10' //false 字符串和数字比较,字符串会转为数字
'3'>'10' //true 字符串之间的比较,比较的是首个字符的Unicode(编码)
'3'->51 '1'->48
3>'10a' //false
3<'10a' //false
3=='10a' //false
NaN==NaN //false
NaN和任何值比较(> < >= <= == ===)结果都是false |
(3)逻辑运算符
and&& 逻辑与(并且),关联的两个条件都是true,结果是true,否则是false
or|| 逻辑或(或者),关联的两个条件有一个true,结果是true,否则是false
! 逻辑非(取反)
短路逻辑
&&:当第一个条件为false的时候,就不在执行第二个条件
||:当第一个条件为true,就不在执行第二个条件
短路逻辑主要是看第二个条件是否执行,无需关注结果是true还是false |
(4)位运算符
模拟计算机底层的运算,先把数字转成2进制再进行运算,运算完再把结果转成10进制
1 2 3 4 5 6 7
1 10 11 100 101 110 111 1000
& 按位于, 上下两位比较,两者都是1结果是1,否则为0
| 按位或, 上下两位比较,含有1结果是1,否则为0
^ 按位异或, 上下两位比较,不同是1,否则为0
>>按位右移,删除二进制下最后一位,每移动一位是原来的一半,如果是小数取整
<<按位左移,在末尾补0,每移动一位是原来的2倍
7>>1 6>>2 6<<2
111 110 110
11 1 11000
3&6 5&9 5|9 4|7 6^10
011 0101 0101 100 0110
110 1001 1001 111 1010
----- ------ ------ ------ --------
110 0001 1101 111 1100
(5)赋值运算符
= += -= *= /= %= ...
赋值 运算赋值:先执行运算,再执行赋值
练习:声明一个变量保存商品价格,让该商品的价格打九折,最后查看价格
(6)三目运算符
一目运算符:由一个运算符连接的一个数据或者表达式 ++ -- !
二目运算符:由一个运算符连接的两个数据或者表达式 除了上面三个其他全是二目运算符
三目运算符:由两个运算符连接的三个数据或者表达式
条件表达式 ? 表达式1 : 表达式2
如果条件表达式为true,执行表达式1
如果条件表达式为false,执行表达式2
四、浏览器端函数
alert() :弹出警示框
prompt():弹出提示框(输入),需要变量保存用户输入的值,类型字符串型,如果点击取消结果是null
- 程序=数据+算法
- 程序的执行方式:顺序执行、选择执行、循环执行
五、流程控制
-
if语句
if(条件表达式){ 语句块 } |
以下情况隐式转换为布尔型结果是false;
0 NaN undefines null '' (引号里面什么也不输入)
-
if-eles语句
If(条件语句块){ 语句块1 }else{ 语句块2 } |
(3)if-else嵌套![](https://img-blog.csdnimg.cn/2a0cb805964040609e86a68be74e2ce9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA77yB5rKh5LqL,size_11,color_FFFFFF,t_70,g_se,x_16)
If(条件表达式1){ 语句块 }else if(条件表达式n){ 语句块n }else{ 语句块n+1 //以上所有条件都是false } |
(4)switch-case语句
是一种特殊的多项分支语句,只能进行全等于的比较
Switch(表达式){ case 值1: //如果表达式的值和case后的值比较相同 语句块1 break; //跳出switch-case语句,不再执行其他的比较 case 值 n: 语句块n Break; Default: // 表达式和每个case后的值比较都是false 语句块n+1 } |
六、循环:一遍又一遍执行相同或者相似的代码
- 循环的两个要素
- 循环条件:控制循环是否往后执行
- 循环体:要重复执行的相同或者相似的代码while循环
1.while循环
-
While(循环条件){
循环体
}
Break
-
在循环体中使用
用于跳出循环,结束循环的执行
2.do-while循环
-
Do{
循环体
}while(循环条件);
3.for循环
For(循环值;循环条件;增量){
循环体
}
4.continue和break
break 结束循环,不再执行任何循环中的代码
continue 跳过后续循环体中的代码,还会继续执行下一次代码
5.循环嵌套
在一个循环体的内部又出现的其它的循环
任意两个循环之间都可以相互嵌套
*****
*****
*****
*****
*****