JS 函数自调用

709 阅读1分钟

函数调用自身

根据函数可以调用自身的特性,实现一些业务上的需求

 function fn(n) {
            if (n <= 0) {
                return 0
            }
            else {
                return n + fn(n - 4)
            }
        }
        var re = fn(2022)// 2022+2018+2014+2010+....a(a要大于0)

示例:遍历数组

        var arr = [[1, 2, 3, 4, [2, 3, 4, 5], [2, 3, 4, 5], [4, 54, 2, 6]], [2, 3, 4, 4, 5, 6]]
        // 假设你只知道数组内部全是(数字和数组的混套), 不知道嵌套了几层
        // 打印出所有数字
        function fn(arr) {
            // 遍历数组
            for (var i = 0; i < arr.length; i++) {
                if (typeof (arr[i]) == "number") {
                    console.log(arr[i])
                } else {

                    fn(arr[i])
                }
            }
        }
        fn(arr)

函数自调用

自调用时一次性函数,声明的同时调用,页面加载完毕,函数也执行完毕。

  • 写法一: (函数)(实参)
(function (anonymous){   //可以加函数名,不加为匿名函数

console.log("这是匿名函数的自执行的第一种写法,结果为:"+(anonymous))`

})(999) //999
  • 写法二: 格式:(函数(实参))
(function (anonymous){   //可以加函数名,不加为匿名函数

console.log("这是匿名函数的自执行的第一种写法,结果为:"+(anonymous))`

}(666)) //666

对于函数声明

不能自动调用函数声明,可以通过()来受说明他是一个函数表达式
实现方法: 可以使用 ()、+、-、!等在函数前实现函数声明的自调用

//使用 () 实现自调用
(function f(a) {
	return a*a;
}(1))
//使用 ! 实现自调用
! function f(a) {
	return a*a;
}(1);
// 使用 + 实现自调用
+ function f(a) {
	return a*a;
}(1);
// 使用 - 实现自调用
- function f(a) {
	return a*a;
}(1);