JavaScript 基础 (函数)

1. 函数的声明

  • 方式一
// 利用函数关键字自定义函数(命名函数)
function fn(){
    // 函数体
}
fn();
  • 方式二
// 函数表达式(匿名函数)
let fn = new function() {
    // 函数体
}
fn();

2. 函数的使用

  1. 函数被调用,才能被执行

  2. 函数可以反复被调用

  3. 我们曾使用过的 alert( ) 、 parseInt( ) 这种后面跟小括号的,本质上都是函数的调用

// 函数的声明
function cook(fan) {
    console.log(fa n);
}
// 函数的调用
cook('酸辣土豆丝');

 任意两个数之间的和:

// 任意两个数之间的和
// 声明
function getSums(start, end) {
    let sum = 0;
    for (let i = start; i <= end; i++) {
        sum += i;
    } 
    return sum;
}
// 调用
getSums(1,100);

3. 立即执行函数

  • 两种方式
(function(){  //函数体  })();
 
(function(){  //函数体  }());
(function ( x, y) {
    console.log(x +y)
}) (1,2)
  • 立即执行函数是匿名函数的一种

  • 不需要调用,立即执行

  • 多个立即执行函数之间 需要用 ; 隔开

4. 实参与形参的匹配

  • 实参 > 形参 :取形参个数

  • 实参 < 形参 :缺少的形参值为 undefined,结果NaN

  • 建议形参与实参相匹配

🔔 当用户不传入实参 时,会出现 undefined + undefined = NaN

解决方法:

  1. 当用户不输入实参时,可以给形参设置默认值(如下代码)

  2. 这个默认值只会在缺少实参的情况下才会被执行,所以参数会优先执行传递过来的实参

// 举例
function getSum(a = 0, b = 0) {
            return a + b
}

5. 函数的作用域

5.1 作用域

  • 作用域:通俗来讲,就是这个名字(或代码)起作用的范围

1. 全局作用域   【全局有效】整个 script 内部起作用

2. 局部作用域   【局部有效】在函数内部起作用(函数作用域)

3. 块级作用域   {} 内有效 】eg: for 循环的{}内

5.2 变量作用域

1. 全局变量  【函数外部 let 变量】在任何区域都可以访问和修改

2. 局部变量  【函数内部 let 变量】只能在当前函数内部访问和修改

3. 块级变量  【{} 内部的 let 变量】只能在{} 里,访问修改,不能跨域访问

注意:

  1. 在函数内部,没有声明直接复制的变量,当作全局变量(不推荐这样使用)

  2. 函数内部的形参可以看做局部变量

5.3 变量的访问原则

  • 采用作用域链 (就近原则)先看当前作用域,如没有,则看上一级作用域,以此类推
  • 例如:下图结果为 123

 6. 匿名函数

  • 匿名函数
function() {
    // 函数体
}
  •  函数表达式:将匿名函数的值给一个变量,通过变量名进行调用
let fn() = function() {
    // 函数体
}

7. return 

7.1 return 返回值

  • 若函数有 return ,return 后面的代码不会被执行,如果有数据需要返回,,不要在 return 后面进行

  • 若函数没有 return ,则返回 undefined

function getMax(sum1, sum2) {
    return num1 > num2 ? num1 : num2;
}
var max = getSum(1,22);

7.2 return 能终止函数

  • return 后面所有行的代码不会被执行

  • return 只能返回一个值,若需返回多个值,可通过返回数组实现

function getResult(num1, num2) {
    return [num1+num2, num1*num2, num1/num2];
}

8. 函数可以相互调用

计算平闰年

// 判断平、闰年
function isRunYear(year) {
    let flag = false;
    if(year % 4 == 0 && year%100 != 0 || year % 400 ==0){
        flag = true;
    }
    return flag;
}

function backDay() {
    let year = prompt('请输入年份:');
    if (isRunYear(year) == true) {
        alert('当前年份是闰年2月份有29天') //2000
    } else {
        alert('当前年份是平年2月份有28天');
    }
}
backDay();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值