js基本功--函数04

2017-11-10  本文已影响14人  peng凯

js第四天函数

函数的概念:代码复用的一种机制或者封装某种功能的代码块

函数组成

参数

        形参:就是在定义函数的函数,小括号里面的参数称为形参,用来占位置

        实参:当调用 函数的时候,传进来的参数才称为实参,是有实际意义 的数据值

返回值

1. 函数里代码执行完毕之后如果说有数据需要返回的,则此数据值就是函数的返回值

2. 函数里面的代码执行完毕之后,如果没有数据值需要返回,则会有默认的值 undefined,但是这个undefined一般对于我们而言是没有用的,因此不需要定义变量来接收 比如alert();

3. 函数内部一般只能返回一个值  如果想返回多个值那就需要将值放到数组或是对象当中

函数名(功能)

函数好处:

        1  解决代码的冗余

        2. 一次声明多次调用

        3  对于我们项目的维护有利

函数的四种形式

        1.无参无返回值  getNum()

        2.无参有返回值  Math,random()

        3.有参无返回值 alert()

        4有参有返回值 prompt()

函数的作用域

        全局变量,在全局作用域内定义的变量或是在函数内部不使用var 定义的变量,都是全局变量

            局部变量: 在函数内部使用var定义的变量就是局部变量,只能在函数内部使用,全局是不能用的

            js当中没有块级作用域

全局变量与局部变量的区别

区别:

1. 全局变量可以在任意的地方使用或是调用 ,在全局里面,或是局部(函数内部)

2. 局部变量只能在函数内部使用,外部不可以调用

预解析机制

js在真正的解析代码之前,会先把所有的代码扫描一遍,会将变量的声明,函数的声明提升到当前作用域的最前面.

值得收藏案例:

1,金字塔

varn =10;

for(vari=1;i<=n;i++){

for(varm=1;m<=n-i;m++){

document.write(" ");

}for(vark=1;k<=2*i-1;k++){

document.write("*");

}document.write("
");}

2.**求斐波那契数列中第12个数字

斐波那契数列:1,1,2,3,5,8,13,21

规律:后面的数等于前两个数之和

varnum1 =1;

varnum2 =1;

for(vari =3;i <=12;i++) {

vartemp = num2;

num2 = num1 + num2;

num1 = temp;

}alert(num2);

3.

**输出1-100内所有素数

素数(质数):除了1和自己本身,不能被其他数整除,如:2,3,5,7,11

zhishu();

functionzhishu(){

varstr="",n=0;

for(vari=1;i<=100;i++){

varm=0;//质数

for(varj=2;j1-100间的质数总数为:"+n+"个");

window.document.write("

1-100间的质数分别为:"+str.substr(0,str.length-1)+"

");

}

4.去掉数组中重复元素并组成新数组(提示:假设法)

for(vari =1;i < a.length;i++) {

varflag =true;for(varj =0;j < b.length;j++) {

if(a[i]==b[j]){flag =false;break;}

}if(flag){b[b.length]= a[i];}

}document.write(b);

5.翻转数组

//翻转数组;vara =[1,2,4,4,5,"a","a",3,3,1,2,3];

varb =[];varc = a.length;for(vari =0;i < a.length;i++) {

c--;b[i]=a[c];}

document.write(b);

a.reverse();document.write(""+a);

方法二:

vara =[1,2,4,4,5,"a","a",3,3,1,2,3];varb =[];for(vari = a.length-1;i >=0;i--) {b.push(a[i]);}document.write(b);

6.冒泡排序:

vararr =[1,2,3,4,9,5];for(vari=0;i<=arr.length-2;i++){

for(varj=i+1;j<=arr.length-1;j++){

if(arr[i]>arr[j]){

//如果前面的数据比后面的大就交换vart=arr[i];arr[i]=arr[j];arr[j]=t;}

}

}console.log(arr);

上一篇 下一篇

猜你喜欢

热点阅读