arr.slice(stati,endi+1)
1.什么是函数
一段定义好的代码,并可以被反复使用的代码块
作用:提升代码的可读性,代码块:形成了一个相对独立的作用域。
语法:
function 函数名(参数列表){
代码块(函数体) ==>待执行的代码块
return 返回值 返回执行的一些结果, 结束函数(程序碰到return之后,return后面的代码就不会执行了) 最多只能有一个返回值
}
一些经常使用的函数
isNaN()
toFixed()
alert()
console.log('world')
prompt();
document.write("")
Number()
toString()
parseInt()
parseFloat()
charCodeAt()
函数的作用域
全局函数:一般是js写好的一些函数, 独立于任何function的位置处,位于JS的最外层
局部函数:在一个函数内部定义的函数
function fun1(){
console.log('测试局部函数');
console.log('测试局部函数');
function fun2(){
console.log('这是一个局部函数,只有在fun2中才能被调用')
}
console.log('这是一个局部函数,只有在fun2中才能被调用')
}
fun2();
}
fun1();
}
fun1();
变量的作用域
变量只在当前作用域中可以访问
只有在当前函数中能访问,离开函数无法访问
在函数体中使用var关键字定义的变量才是局部变量
只有在当前函数中能访问,离开函数无法访问
在函数体中使用var关键字定义的变量才是局部变量
switch-case 函数体
语法
switch(变量或表达式){
case 值1:
语句块1;
break;//该语句块结束 可以省略
case 值2:
语句块2;
break;
... ...
default:
语句块n;
break;
语句块1;
break;//该语句块结束 可以省略
case 值2:
语句块2;
break;
... ...
default:
语句块n;
break;
}
执行流程:
1、解析 变量或表达式 中的值
2、用解析出来的值 与case后的值进行等比比较
如果比较的结果成功,则执行case后面的代码块
执行完后,如果碰到break 则结束整个switch结构,否则继续向下执行
2、用解析出来的值 与case后的值进行等比比较
如果比较的结果成功,则执行case后面的代码块
执行完后,如果碰到break 则结束整个switch结构,否则继续向下执行
3、如果case后的值与 解析出来的值均不等值,则执行default后的代码块
直落形式
两块或多块case之间,没有任何操作代码,表示多块case要执行同样的操作
switch(变量/表达式){
case 值1:
case 值2:
case 值3:
语句块;
break;
case 值4:
case 值5:
语句块;
break;
}
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,则退出循环
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));//["冰棍","冰棍","冰棍" ]
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...