1、解析 变量或表达式 中的值
2、用解析出来的值 与case后的值进行等比比较
如果比较的结果成功,则执行case后面的代码块
执行完后,如果碰到break 则结束整个switch结构,否则继续向下执行
3、如果case后的值与 解析出来的值均不等值,则执行default后的代码块
直落形式
两块或多块case之间,没有任何操作代码,表示多块case要执行同样的操作
switch(变量/表达式){
case 值1:
case 值2:
case 值3:
语句块;
break;
case 值4:
case 值5:
语句块;
break;
}
2.循环
1.while循环
语法:
while(条件){
循环体
}
先判断循环条件
循环条件为真则执行循环体,再判断循环条件,为真,执行循环体...
不满足条件, 则结束循环体
2.do-while
do{
循环体
}while(条件)
执行流程:
1、先执行循环体
2、判断循环条件
如果循环条件成立true,则继续执行循环操作
如果训话条件不成立false,则退出循环
while 和 do-while的区别
1. while:先判断,后执行 可能一次都不执行循环体
2.do while:先执行,后判断 至少会执行一次循环体
for循环
语法
for(表达式1;表达式2;表达式3){
循环体
}
表示式1:声明循环变量 可以省略 循环变量需要在循环开始之前声明好
表达式2:
循环条件的判断 可以省略 在循环体中添加结束循环的判断 否则就会形成死循环
表达式3:
更新循环变量 可以省略 在循环体中添加循环变量的更新语句
三个表示可以省略, 但是 " ; "不能省略。
break 关键字 结束当前循环
countinue 终止本次循环的执行,继续下一次循环
3.数组
什么是数组
储存一堆变量,内存中连续存储多个数据的存储空间,同意的名字
创建数组
var arr = [];
var arr = new Array();
创建数组的同时初始化数组内容
var arr = [1,2,3,4];
数组遍历
var arr = [1,2,3,4];
for(var i = 0 ; i < arr.length; i++){
console.log(arr[i]);
}
引用
数据无法直接保存在变量本地的数据类型因为变量只允许保存一个值,而引用类型往往同时保存多个值
会在window对象之外,创建一个独立的存储空间,并且每个独立的存储空间都有一个唯一的地址
变量中依然保存的是一个值,只是数组中仅保存地址而已 -- 称为 引用
传递的是地址(实际上也是按值传递,只不过值是一个地址);修改了新数组,等效于直接修改元素数组
var my = ["冰棍","冰棍","冰棍","冰棍"];
var wang = my;
wang.length--;
console.dir(my);//["冰棍","冰棍","冰棍" ]
console.log(wang);//["冰棍","冰棍","冰棍" ]
wang = null;//地址变化了
console.log(String(wang)); //null
console.log(String(my));//["冰棍","冰棍","冰棍" ]
数组的API
arr.join ("自定义的连接符") 将数组中的每个元素转化为字符串,可以用自定义连接符
无缝连接 arr.join("");
拼接 将其他元素或者另一个数组,拼接到当前数组结尾
newArr= arr.concat(value1,value2,arr1...);
选取 获得原数组中指定位置到结束位置之间的所有元素,组成临时子数组
arr.slice(stati,endi+1) 下表参数含头不含尾 slice无权修改原数组,只是赋值原数组中的元素组成新数组
数组的修改(删除,插入,替换)
删除 arr.splice (starti,n); 删除arr中从starti开始之后的n个元素,n表示个数,starti表示从第几个元素开始
修改了元素组 负数参数 : length - n
插入 arr.splice(starti,0,value1,value2 arr1);
starti表示位置,0表示一个都不删除,原位置的值向后顺移
替换
arr.splice(starti,n,value1,value2...);
先删除arr中starti位置开始的n个元素,再在starti位置插入value1,value2...