1.函数
Number()/parseInt()/parseFloat()/alert()/prompt()...
函数分为系统函数和自定义函数
函数:是一个功能体,提供若干个数据,返回处理结果,用于封装要重复执行的代码
(1)创建普通函数
function 函数名称(){ 函数体 —— 封装的要重复执行的代码 } |
函数只是创建不会执行函数体中的代码
调用
函数名称() //执行函数体中封装的代码
练习:创建函数getSum,在函数体中封装计算1~100之间所有整数的和并打印结果,最后调用多次
(2)创建带有参数的函数
function 函数名称(参数列表){ //用于接收外部传递的数据 函数体 } |
调用
函数名称(参数列表) //实际传递的数据
创建函数时的参数称为形参,调用函数时的参数称为实参,实参会赋值给形参,实参和形参的数量可以不匹配,如果形参未被赋值则为undefined。
练习:创建函数getRun,传递两个参数,统计任意两个年份之间所有的闰年个数,调用多次。
(3)创建带有返回值的函数
function 函数名称(参数列表){ 函数体 return 值; //返回值,函数调用后得到的结果 } |
调用
函数名称(参数列表)
return用于返回函数调用的结果,如果函数中没有写return或者return后不加任何值则返回undefined,一旦return执行就会结束函数的执行。
练习:创建函数getMax1,传递任意两个数字,返回最大值
function getMzx1(a,b){
if (a>b)
{
return(a);
}else{
return(b);
}
}console.log(getMzx1(3,5));
(2)function getMzx1(a,b){
return a>b ? a : b
}console.log(getMzx1(3,5));
练习:创建函数getMax2,传递任意3个数字,返回最大值
function getMax2(a,b,c){
//return a>b && a > c ? a: (b>c ? b : c);
var m = a>b?a:b;
return m >c ? m : c;
}
console.log(getMax2(3,5,1));
练习:创建函数getStatus,传递订单的状态码,返回对应的汉字的状态
1-等待付款 2-等待发货 3-运输中 4-已签收 5-已取消 其它-无法追踪
function getStatus(a){
switch (a)
{
case 1: return '等待付款';
case 2: return '等待发货';
case 3: return '运输中';
case 4: return '已签收';
case 5: return '已取消';
defaullt: return('无法追踪');
}
}
console.log(getStatus(2));
使用switch-case进行多项判断
对比return和break return用于函数中,结束函数的执行 break用于循环和switch-case,结束循环或者switch-case的执行 |
练习:创建函数isPrime,传递任意一个数字,查看是否为素数,返回布尔型的值
function isPrime(n){
for(var i=2,count=0;i<n;i++){
if(n%i===0){
return false;
}
}
return true;
}
console.log(rsPrime(7));
练习:创建函数isRun,传递任意一个年份,查看是否为闰年,返回布尔型的值
function isRun(i){
return i %4 ===0 && i %100 !=0 || i %400===0
}
console.log(isRun(2021));
2.变量的作用域
全局变量:在全局作用域下声明的变量就是全局变量,可以在任意的作用域访问到
局部变量:在函数作用域下声明的变量就是局部变量,只能在当前的函数作用域下访问到
全局作用域:函数以外的作用域
函数作用域:函数以内的作用域
函数内不加var声明的变量是全局变量
变量提升:在程序执行前,会将var声明的变量提升到所在作用域的最前边,只是提升声明,赋值不提升
3.函数的作用域
全局函数:在全局作用域下创建的函数,可以在任意作用域下访问到
局部函数:在函数作用域下创建的函数,只能在当前函数作用域下访问到
作用域链:多个作用域嵌套构成的作用域结构,在寻找变量的时候,先到当前的作用域下寻找,如果当前没有会不断往上一级作用域寻找。
函数提升:程序执行前,会将函数提升到所在作用域的最前边,是整体提升
斐波那契数列
第1项、第2项都是1,从第3项开始,每项的值是前两项相加的和;
1 1 2 3 5 8 13 21...
练习:创建函数fib,传递任意一项,返回斐波那契数列下这一项的值
function fib(n){
if (n===1 || n===2)
{
return 1;
}
for(var i=3;i<=n;i++){
a3=a1+a2;
a1=a2;
a2=a3;
}
return a3;
}
console.log(fib(7));
练习:创建函数getSum,传递任意一个数字,计算1~任意数字之间所有整数阶乘的和。
function getSum(n) {
for (var i=1,j=1,sum=0;i<=n ;i++ )
{
j*=i;
sum+=j;
}
return sum;
}
console.log(getSum(5));