js基本功--函数04
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);