JavaScript函数

70 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天

函数

定义

再JS里面,可能会有定义非常多的相同代码或者功能相似的代码,为了满足生产重复的要求,我们可以使用JS中的函数(即封装一段可重复使用的代码块)

  • 例子
function getSum(num1,num2){
    var sunm = 0;
    for (var i = num1; i <= num2; i++){
        sum += i;
    }
    console.log(sum);
}
getSum(1,100);

函数的使用

声明函数

function 函数名(){
    函数体;
}
  1. funnction 声明函数的关键字全部小写
  2. 函数是做某件事,所以一般为动词
  3. 函数不调用自己不执行

调用函数

函数名(参数);

函数的参数

形参和实参

  • 形参:是声明函数的小括号里面的是形参(形式上的参数)
  • 实参:在函数调用的小括号里面的是实参(实际的参数)
function order(food){ //形参是接受实参的 food = '麻婆豆腐' 形参类似于一个变量
    console.log(food);
}
order('麻婆豆腐')
  • 函数的参数可以有,也可以没有,个数不限

函数新参和实参的匹配问题

function getSum(num1,num2){
    console.log(num1,num2);
}
// 1.如果实参的个数和形参的个数一致,就正常输出结果
getSum(1,2);  //3
// 2.如果实参的个数多余形参的个数,会取到形参的个数
getSum(1,2,3);  //3
// 3.如果实参的个数少余形参的个数, num2 是一个变量但没有接受值,结果就是undefined,整数和undefined返回的结果就是NaN
getSum(1); // NaN

小结

  • 函数可以带参数也可以不带
  • 声明函数的时候,函数名括号里面的是形参,形参的默认值为undefined
  • 调用函数的时候,函数名括号里面的是实参
  • 多个参数中间用逗号分隔
  • 形参的个数可以与实参个数不匹配,但是结果不可预计,我们尽量匹配

函数的返回值

我们希望函数将结果返回给调用者,此时通过使用return语句就可以实现

  • 语法规范
function 函数名(){
    return 需要返回结果;
}
函数名();
  • 我们的函数只是实现某种方法,最终的结果需要返回给函数的调用者,通过return实现
  • 只要函数遇到return就把后面的结果返回给函数的调用者 函数名() = return后面的结果

return注意事项

  • return之后的语句不会执行
function getSum(num1,num2){
    return num1 + num2;
    alert('我是不会执行的')
}
console.log(getSum(1,2));
  • return只能返回一个值
function fn(num1,num2){
    return num1,num2; //返回结果是最后一个值
}
console.log(fn(1,2));
  • 我们求任意两个数,加减乘除的结果
function getResult(num1,num2){
    return [num1+num2,num1-num2,num1*num2,num1/num2]
}
var re = getResult(1,2);
console.log(re);
  • 函数没有return返回undefined
// 我们函数如果有return则返回的是return后面的值,如果函数没有return则返回undefined
function getResult(){
    
}
var re = getResult();
console.log(re);  //undefined

arguments的使用

当我们不确定有多少个参数传递时,可以用arguments来获取。在Javascript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置一个arguments对象,arguments对象中存储了传递的所有实参

function fn(){
    console.log(arguments); //里面存储了所有传递过来的实参
}
fn(1,2,3)

image-20220624153958246.png

arguments展示形式是一个为数组,因此可以进行遍历,伪数组具有以下特点:

  • 具有length属性
  • 按索引方式存储数据
  • 不具有数组的push,pop等方式

函数相互调用

函数时可以互相调用的

function fn1(){
    console.log(11);
    fn2(); //在fn1函数里面调用了fn2
}
fn1();
function fn2(){
    console.log(22);
}

image-20220624155405505.png

函数的两种声明方式

  1. 利用函数关键字自定义函数
function 函数名(){
    函数体;
}
  1. 函数表达式(匿名函数)
var 变量名 = function(){}
//来个例子
var hi = function(){
    console.log('hi');
}
hi();
  • hi不是函数名而是变量名
  • 函数表达式声明方式跟声明变量差不多,只不过变量里面存储的是值,而函数表达式里面存放的是函数
  • 函数表达式也可以传递参数