h5局部变量、全局变量、数组、选择排序(快速排序)、冒泡排序

来源:互联网 发布:收钱软件哪个好 编辑:程序博客网 时间:2024/06/01 10:42

变量的作用域

    局部变量:在函数内部定义的变量,这个变量只能在函数内部使用,在全局当中不能使用。使用就报错了。

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);

阅读全文
0 0
原创粉丝点击