二阶段 day04

80 阅读2分钟

二、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];//当前次元素
	}