1、自定义Function的深入了解: 1、创建的方式:3种,但是目前只学了2种 1、声明方式: function 函数名(形参列表){ 函数体; return 结果; }
2、直接量方式:
var 函数名=function(形参列表){
函数体;
return 结果;
}
2、调用:var result=函数名(实参列表);
3、作用域:
全局:全局变量 和 全局函数,在任何位置都可以使用
函数:局部变量 和 局部函数,只能在函数调用时内部可用
带来了变量的使用规则:优先使用局部的,局部没有找全局,全局没有就报错
缺点:
1、全局用不到局部的,但是搭配上return即可解决
2、不要再函数内对未声明的变量赋值,会导致全局污染,降低性能
4、声明提前:再程序正式执行之前,会悄悄的将var声明的变量(轻)和function声明的函数(重),集中提前到当前作用域的顶部,但是赋值留在原地
5、重载:相同的函数名,根据传入的实参的不同,自动选择对应的函数执行,但是JS不支持,因为同名函数出现,后面的会覆盖前面的
解决:arguments - 类数组对象,跟数组长得很像
作用:哪怕没有形参,也可以接住所有的实参
用法:arguments[1] - 得到的是第二个实参
arguments.length - 获取到传入的实参有几个
变相实现重载:我可以再函数内部判断实参的不同执行不同的操作
2、数组:一个变量可以保存多个数据 1、创建:2种 1、直接量:var arr=[数据,...]; 2、构造函数:var arr=new Array(数据,...);
2、访问:arr[i];
3、添加/替换:arr[i]=新数据;
4、数组具有三大不限制:
1、不限制长度
2、不限制类型
3、不限制下标越界:
访问:下标越界 - 得到undefined
添加:下标越界 - 变成稀疏数组,如果搭配上遍历,则为会得到很多undefined
5、数组唯一的属性:arr.length - 获取到数组的长度,最大下标 === 长度-1
三个固定套路:
1、向末尾添加:arr[arr.length]=新值;
2、获取倒数第n个:arr[arr.length-n];
3、删除倒数n个:arr.length-=n
6、遍历数组:往往不是取出某个来使用,而是取出所有来执行 相同 或 相似的操作
for(var i=0;i<arr.length;i++){
arr[i];
}