函数调用自身
根据函数可以调用自身的特性,实现一些业务上的需求
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);