JS函数
斐波那契数列
// 数列:1 1 2 3 5 8...
function fibonacci(n) {
if (n === 1 || n === 2) {
return 1
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
console.log(fibonacci(6))
函数声明VS函数表达式
/*
执行时机不同
函数表达式是在代码执行达到时被创建,仅仅是在那一刻起可用
函数声明被定义之前,它就可以被调用
javascript准备脚本时,首先寻找全局函数声明,并创建这些函数
*/
头等函数:函数式编程
- 函数可以被赋值给变量
- 函数在变量之间来回传递
- 作为另一个函数的参数
- 作为另一个函数的返回值:柯里化
- 将函数存储在另一个数据结构中
高阶函数
- 接收一个或多个函数作为输入
- 输出一个函数
立即执行函数
-
第一部分定义了一个匿名函数,这个函数有自己的独立作用域
-
第二部分是后面的(),表示这个函数被执行了
(function(){ // do some thing })() +function foo(){ // do some thing }()
应用场景
- 防止全局变量的命名冲突