函数声明 function fn(){
console.log('this is a function')
}
函数表达式
var fn = function(){
console.log('赋值表达式函数')
}
内置构造函数的形式
var fn3=new Function ('num1','nun2','return num1+num2');
函数名
var fn1=function(){
console.log('函数名()')
}
windows.fn1()
fn1
自调用
var fn2=(function(){
console.log('函数名')
}
window.fn1()
fn1()
)
call调用
fn1.call()
对象中调用函数
var obj1={
name:小刚
say:function(){
console.log(this+'喜欢吃辣条')
}
}
obj1.say
数组中调用函数
var arr=[100,'哈哈',
function(){
console.log(this)
console.log(this[1]+'我是数组中的元素,也是函数')
}
function(){
console.log(‘66666’)
},
true
]
console.log(arr[2])
arr[2]()
arr[3]
闭包:定义在一个函数内部的函数
闭包的用途:可以在函数外部读取函数内部成员 让函数内成员始终存活在内存中(局部变量持久化)
函数递归
改进递归-把前两位数字做成参数避免重复计算
function fibonacci(n) {
function fib(n, v1, v2) {
if (n == 1)
return v1;
if (n == 2)
return v2;
else
return fib(n - 1, v2, v1 + v2)
}
return fib(n, 1, 1)
}
fibonacci(30)