Skip to content
On this page

函数

函数的概念

在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。 虽然 for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用JS中的函数。

函数的使用

  • 声明函数
js
#声明无参数函数
function function_name() {
    函数体
}
#声明有参数函数
function function_name(行参x,行参y) {
    函数体
}
  • 调用无参数函数
#调用无参数函数
function_name()
#调用有参数函数
function_name(实参x,实参y)
  • 函数声明的几种方法
js
1、Function声明
function test(){
    console.log('这是一个function声明的函数')
}
test()   //函数调用
----------------------------------------------------------
2、箭头函数
var test = ()=>console.log('这是一个箭头函数')
test()   //函数调用
----------------------------------------------------------
3、构造函数
var sum =new Function("a","b","return a+b");
console.log(sum(5,6))  //函数调用
----------------------------------------------------------
4、函数表达式
var foo = function(){
          console.log('这是一个函数表达式的打印') 
}
foo()    //函数调用
----------------------------------------------------------
5、匿名函数
(function(){
            console.log('这是一个匿名函数的打印')   
})
//函数调用/执行
(function(){
            console.log('这是一个匿名函数的打印')   
})()

函数的返回值

js
function hhh() {
    return 666
}
console.log(hhh())

TIP

注意:

  • 1、函数没有return返回undefined,
  • 2、函数里面的return后面的代码不执行,
  • 3、如果是这样的"return 666,777,888"的,则返回值为888,

arguments的使用

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

所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。

TIP

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

  • 具有length属性
  • 按索引方式储存数据
  • 不具有数组的push , pop等方法
js
#求多个数的max
function hhh() {
    var max = arguments[0];
    for (var i=1;i<arguments.length;i++){
        if (arguments[i]>max){
            max=arguments[i];
        }
    }
    return max
}
console.log(hhh(1,2,3,5,6,7,8,9))

函数调用另一个函数

js
//函数是可以互相调用
function test1(){
    test2()
}
function test2(){
    console.log("这个函数被调用了")
}
test1()

提醒

JavaScript 中的函数不支持重载。函数重载是指在同一个作用域内定义多个同名函数,但每个函数有不同的参数列表,这样在调用函数时,根据传入的参数个数和类型的不同,会自动选择调用对应的函数。 在其他一些编程语言中,如 Java、C++ 等,函数重载是一种常见的技术。但是在 JavaScript 中,同名函数会发生覆盖,最后定义的函数会覆盖之前定义的函数,不论它们的参数个数和类型是否相同。 可以使用默认参数值、剩余参数和函数重载模拟函数重载的行为,但实际上这些方法只是基于函数参数的语法糖,无法真正实现函数重载的效果。

函数案例

js
# 用函数实现任意的数组的反转
var arr = [2,20,30,5,0,54,222,55,51,36,25,0,3,5,52,25,102,]
function fan(x) {
    var newArr = []
    for(var i=x.length-1;i>=0;i--){
        newArr[newArr.length]=arr[i]
    }
    return newArr
}
console.log(fan(arr))
js
#函数实现任意数组升序排序-冒泡排序
var arr = [2,20,30,5,0,54,222,55,51,36,25,0,3,5,52,25,102,]
function fan(x) {
    for (var i=0;i<=x.length-1;i++){            //外层循环趟数
        for (var j=0;j<=x.length-i-1;j++){      //里面循环管每一次交换次数
            if (x[j]>x[j+1]){
                var temp=x[j]
                x[j]=x[j+1]
                x[j+1]=temp
            }
        }
    }
    return x
}
console.log(fan(arr))
----------------------------------------------------------------
#函数实现任意数组降序排序-冒泡排序
var arr = [2,20,30,5,0,54,222,55,51,36,25,0,3,5,52,25,102,]
function fan(x) {
    for (var i=0;i<=x.length-1;i++){            //外层循环趟数
        for (var j=0;j<=x.length-i-1;j++){      //里面循环管每一次交换次数
            if (x[j]<x[j+1]){
                var temp=x[j]
                x[j]=x[j+1]
                x[j+1]=temp
            }
        }
    }
    return x
}
console.log(fan(arr))