您的位置:首页 > Web前端 > HTML5

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

2017-11-21 18:19 281 查看
变量的作用域

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

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐