JavaScript03
个人总结,不足请谅解,总结不断进行中,如有技术探讨请私信,不胜感谢(^__^)
回顾
while循环特点
- 先判断,后循环,有肯恩过一次都不循环,一般用在不知道循环次数的需求上
do-while循环特点
- 先循环后判断,至少执行一次循环体内容
for循环特点
- 已知循环次数,与while相同
函数
函数的参数
- 函数在定义的时候函数名后面的小括号中的变量叫做参数
- 函数在定义的时候,函数名后面的小括号里的变量不需要使用var声明
- 函数在调用的时候,传入的值也叫参数
形参
- 函数在定义的时候函数名后面括号内的参数
实参
- 函数在调用的时候函数名后面括号内的参数
传参
- 把实参的值传给形参
注意
- 在JS中函数的形参个数可以与实参个数不一致
返回值
- 在函数内部,如果有return,则该函数就有返回值,return后面的内容就是该函数的返回值结果
- 函数声明了,没有返回值,结果是undefined
- 函数中return下面的代码不执行
- return后没有明确的返回值,结果是undefined
函数的四种表现方式
- 无参数,无返回值
- 无参数,有返回值
- 有参数,无返回值
- 有参数,有返回值
案例
求两个数的和
function getSum(x,y){ return x+y; } console.log(getSum(20,30));
求两个数的差
function getSub(x,y){ return x-y; } console.log(getSub(20,30));
求1-100之间所有数的和
function getSum(){ var sum=0; for(var i=1;i<=100;i++){ sum+=i; } return sum; } console.log(getSum());
求m-n之间所有数的和
function getSum(m,n){ var sum=0; for(var i=m;i<=n;i++){ sum+=i; } return sum; } console.log(getSum(1,22));
反转数组
function getArr(arr){ for(var i=0;i<arr.length/2;i++){ var temp=arr[i] arr[i]=arr[arr.length-1-i] arr[arr.length-1-i]=temp; } return arr; } var ccc=[1,2,3,4,5] console.log(getArr(ccc));
求三个数字中的最大值
function getMaxNum(x,y,z){ return x>y?(x>z? x:z):(y>z? y:z) } console.log(getMaxNum(1,2,3))
求数组中的最大值,最小值,求和
function getMaxAndMinAndSum(array){ var sum=0; var min=array[0]; var max=array[0]; for(var i=0;i<array.length;i++){ if(max<array[i]){ max=array[i]; } if(min>array[i]){ min=array[i]; } sum+=array[i]; } var maxMinSum=[max,min,sum]; return maxMinSum; } var arr=[3,4,25,67,32,32]; var array=getMaxAndMinAndSum(arr); console.log("最大值是:"+array[0]+"最小值是"+array[1]+"和是:"+array[2]);
数组排序
function paiXu(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-1-i;j++){ if(arr[j]<arr[j+1]){ var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } return arr; } var a=[3,44,56,74,3,2,1] console.log(paiXu(a))
求1-100之间所有奇数的和
function jiSum(m,n){ m=m||0 n=n||0 var x=m>n?m:n; var y=m<n?m:n; var sum=0; for(var i=y;i<=x;i++){ if(i%2!=0){ sum+=i; } } return sum; } console.log(jiSum())
求一个数字是否是质数
function isPrime(num){ for(var i=2;i<num;i++){ if(num%i==0){ return false; } } return true; } var flag=isPrime(7) if(flag==true){ console.log("是质数") }else{ console.log("不是质数") }
求圆的面积
function getS(r){ return Math.PI*r*r; } console.log(getS(5));
求8的阶乘
function getJie(num){ var result=1; for(var i=1;i<=num;i++){ result*=i; } return result; } console.log(getJie(5));
求8以内的阶乘和
function getSumJie(num){ var sum=0; for(var i=1;i<=num;i++){ sum+=getJie(i); } return sum; } console.log(getSumJie(5)) //求某个数字的阶乘和的结果是极为数字 function getWei(num){ var i=1; while(num>=10){ num/=10; i++ } return i;//位数 } console.log(getWei(getSumJie(5)));
求斐波那契数列第八个数字的值
function suLie(a){ var num1=1; var num2=1; var sum=0; for(var i=3;i<=a;i++){ sum=num1+num2; num1=num2 num2=sum; } return sum; } console.log(suLie(8));
根据年月日求这一天是此年的第几天
//判断年份是不是闰年 function isLeapYear(year){ //if(year%4==0&&year%100!=0||year%400==0){} return year%4==0&&year%100!=0||year%400==0; } function getDays(year,month,day){ var days=day;//记录所有的天数 if(month==1){ return day; } //累加所有月份的天数 var months=[31,28,31,30,31,30,31,31,30,31,30,31]; for(var i=0;i<month-1;i++){ days+=months[i]; } if(month>2&&isLeapYear(year)){ days++; } return days; } console.log(getDays(2017,3,2))
函数的两种定义方式
函数声明
function 函数名(){}
- 命名函数:函数有名字
- 匿名函数:函数没有名字
函数表达式
使用匿名函数声明,赋值给一个变量
var f1=function (){ console.log() }; f1(); --- function f1(){ console.log("test") } console.log(f1())//undefined --- (function (){console.log("test")})();//函数自调用,只能用一次,jQuery
JS中没有块级作用域
作用域
- 变量(对象)的是用范围
局部作用域
- 在函数内部声名的变量,函数外面无法访问,这种变量叫局部变量,使用范围在函数中,使用的范围叫局部作用域
全局作用域
- 在script标签中声明的变量,可以再页面的任何位置访问的到,叫全局变量,适用范围在整个页面
隐藏全局变量
num=100;//隐藏全局变量:声明变量不使用var console.log(num); var num1=10;//全局变量,不可删除 num2=20;//可以删除--不推荐使用 delete num1;删除变量 delete num2;
块级作用域
- 变量在一对大括号中的使用范围(if语句,for语句,while…)
- JS中没有块级作用域
函数作为参数和返回值使用
函数可以作为参数使用
回调函数
函数作为其他函数的参数
函数可以作为返回值使用
arguments对象(伪数组)
arguments可以获取函数调用的时候传入的参数
function getSum() { console.log(arguments.length);//调用函数的时候传入的参数的个数 console.log(arguments[0]); console.log(arguments[1]); console.log(arguments[2]); var sum=0; for(var i=0;i<arguments.length;i++){ sum+=arguments[i]; } return sum; } var s=getSum(10,20,100);//调用 console.log(s);