函数高级应用
函数的定义方式
1.函数声明
function fn(){
console.log(111)
}
2.函数表达式
var fn = function(){
consloe.log(1111)
}
3.内置构造函数
var fn=new Function("num1","num2","return num1+num2")
censloe.log(fn(2,3))
函数的调用方法
函数名()
(自调用)()
call()调用 fn1.call();
对象中的函数调用 obj1.say();
数组中函数调用
函数作为参数的调用
函数作为返回值的调用
闭包 : 能够读取其他函数内部变量的函数
闭包的用途:
可以在函数外部读取函数内部成员
让函数内成员始终存活在内存中
闭包之访问函数内部
函数递归
案例(思路)
function fn1(){
console.log(11);
fn2()
console.log("fn1");
}
function fn2(){
console.log(22);
fn3()
console.log("fn2");
}
function fn3(){
console.log(33);
fn4()
console.log("fn3");
}
function fn4(){
console.log(44);
console.log("fn4");
}
fn1()
斐波那契数列
(案例)
function fibonacci(n){
if(n==1){
return 0
}
if(n==2){
return 1
}
return fibonacci(n-1) + fibonacci(n-2)
}
console.log(fibonacci(4));
console.log(fibonacci(5));
console.log(fibonacci(6));
console.log(fibonacci(50));