二、Function:函数也叫方法,需要提前预定义好,以后可以反复使用的代码段
1、创建:2种
1、声明方式:
function 函数名(形参列表){
函数体;
return 返回值;
}
2、直接量方式:
var 函数名=function(形参列表){
函数体;
return 返回值;
}
函数名和变量名是同一个东西,尽量不要重复
2、调用:
var 接住返回的值=函数名(实参列表);
3、作用域:
全局作用域:成员,在任何地方都可以使用
函数作用域:成员,只能调用时内部可用
带来了变量的使用规则:优先使用局部的,局部没有找全局,全局没有就
报错
缺点:
1、千万不要对着未声明的变量直接赋值,这会导致全
局污染
2、函数内的东西外面用不到,但是return可以解决,
return的退出函数,如果后面跟着一个数据,就会返
回到我们的全局作用域
4、声明提前:
规则:在程序正式执行之前,会悄悄的将var声明的变量(轻)和function
声明的函数(重)集中提前到当前作用域的顶部,但是赋值留在原地
5、重载:同一个函数,根据传入的实参的不同,自动选择对应的函数执行,但是在js中不支持 同名函数的存在
解决:函数中有一个类数组对象arguments,和数组有相同点:
1、都可使用下标访问某个元素
2、都可使用length获取长度
3、都可使用遍历得到每一个元素
作用:哪怕没有形参,也能接住所有的实参,通过在函数内部判断实参的
不同去执行不同的分支,相当于变相实现了重载
function 函数名(){
if(arguments.length==?){
}...
}
二、数组:一个变量可以保存住多个数据
1、创建:2种
1、直接量:var arr=[数据,...];
2、构造函数:var arr=new Array(数据,...);
2、获取数组的元素:
arr[i];//下标i是从0开始的,到arr.length-1结束的
3、添加/替换:
arr[i]=新数据;
4、数组的三大不限制:
1、不限制类型
2、不限制长度
3、不限制下标越界 - 不是好事
获取元素,下标越界,得到undefined
添加元素,下标越界,得到是一个稀疏数组,如果搭配
上遍历,那你会得到更多的undefined
5、数组的唯一的一个属性:
arr.length - 获取到数组的长度,但是长度是从1开始数的
固定套路:
1、向末尾添加元素:arr[arr.length]=新数据;
2、获取倒数第n个元素:arr[arr.length-n];
3、缩容:arr.length-=n
6、遍历数组:
拿出每一个元素 执行 相同 或 相似的操作
for(var i=0;i<arr.length;i++){
arr[i];//当前次元素
}