变量的作用域
局部变量:在函数内部定义的变量,这个变量只能在函数内部使用,在全局当中不能使用。使用就报错了。
var a=1;
function localval() {
var a=2;
alert(a);
}
localval();
alert(a);
全局变量:在函数外部定义的变量,这个变量可以在全局使用,但是我们一般不能推荐使用全局变量,因为可能会意外的修改全局变量的值。
var a=1;
function localval() {
var a=3;
alert(a);
}
localval();
function localval2(){
a=5;
alert(a);
}
localval2();
localval();
alert(a);
冲突处理原则:就近原则。而不是从上到下
只要在函数内部定义了和全局变量名字一样 的变量,不管是在定义之前和定义之后使用,都不会去调用全局变量。
有时候我们需要在局部访问全局。
var a=1;
function localval(){
alert(window.a);//如果没有加window,返回的是:underfine
var a=2;
alert(a);//2
var a=3;
alert(a);//3
}
localval();
如果想要访问全局变量,只要给变量名前加上window就可。
注意:在局部函数当中定义一个变量,不加var那么这个变量默认为全局变量。
function localval(){
a=1;
alert(a);
}
localval();
alert(a);
5 数组
为什么要有数组?
让用户输入5个学生的成绩,计算这五个人的成绩的平均分?
var a1=Number(prompt("输入一个成绩"));
var a2=Number(prompt("输入一个成绩"));
var a3=Number(prompt("输入一个成绩"));
var a4=Number(prompt("输入一个成绩"));
var a5=Number(prompt("输入一个成绩"));
var ave=(a1+a2+a3+a4+a5)/5;
alert(ave);
这个时候假设有100个人,明显不能一行行的去写,从我们所学的知识可以和循环联系起来。但是我们不能控制到底是a几。所以这个时候有了数组。他可以很好的和循环结合。
var a=[];
var sum=0;
for(vari=0;i<5;i++){
a[i] = Number(prompt("输入一个成绩"));
sun+= a[i];
}
var ave=sum/a.length;
alert(ave);
这两段代码实现了同样的效果,如果要增加人数我们只需要改变i的值就可以了。
什么是数组?
数组就是连续的变量,连续的内存单元
怎么用?
定义一个数组有三种方式:
var arr=[];
var arr1=newArray();
var arr2=[1,2,3];
如何去访问
通过数组的名字+下标
要注意一个问题就是下标越界的问题,因为计算机当中第一个数是从0开始。比如长度为5的组,最后一个下标就是4,如果越界,就会报错。
数组的属性:
Length:数组的长度
Push:在数组的最后面插入一个元素,返回的结果是新数组的长度。并且改变了原数组。
Pop():在数组的最后面删除一个元素。并且原数组的值改变了。
var arr=[1,2,3,4,5];
var res=arr.push(7);
document.write(arr);//1,2,3,4,5,7
alert(res);//6
var res=arr.pop(4);
document.write(arr);//1,2,3,4
alert(res);//5
shift():在头部删除一个元素,返回的是删除的那个元素。并且原数组的值改变了。
unsift(1):在头部插入一个元素,返回的是新数组的长度,并且原数组的值改变了。
var arr=[1,2,3,4,5];
var res=arr.shift();
document.write(arr);//2,3,4,5
alert(res);//1
var res=arr.unshift(1);
document.write(arr);//1,1,2,3,4,5
alert(res);//6
队列:先进先出,排队一样,最先排队的人最先出去。
堆栈:先进后出,就像洗碗一样,第先洗完的最后用。
用数组排队:
var arr=[1,2,3,4,5];
document.write(arr+"</br>");//1,2,3,4,5
var res=arr.push(7);
document.write(arr+"</br>"); //1,2,3,4,5,7
arr.shift();
document.write(arr+"</br>"); //2,3,4,5,7
arr.shift();
document.write(arr+"</br>"); //3,4,5,7
alert(res); //6
排序:
Arr=[2,1,4,6,7];
选择排序(快速排序):
//选择排序、快速排序
var arr=[2,1,4,3,5];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
alert(arr);
冒泡排序:
var arr=[2,1,4,3,5];
for(vari=0;i<arr.length;i++){
for(varj=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
vartemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
alert(arr);
数组系统提供了一个方法sort():
例:四位数获得最大值,最小值。
var num=Number(prompt("输入一个四位数"));
var a =Math.floor(num/ 1000);
var b =Math.floor(num/ 10)% 10;
var c =Math.floor(num/ 100)% 10;
var d=num%10;
var arr=[a,b,c,d];
arr.sort();
var max=arr[0]*1000+arr[1]*100+arr[2]*10+arr[3];
var min=arr[0]+arr[1]*10+arr[2]*100+arr[3]*1000;
alert(max);
alert(min);