1.return
js函数中语句,return语句将终止当前函数并返回当前函数的值
函数体内没有return时,函数执行完会默认返回一个undefined
throw 抛出异常,跳出函数
工厂模式:
通常在类或者类的静态方法中实现
目的:
1.创建相似对象时,执行重复操作
2.编译时,不知道具体类型的情况下,为工厂客户提供一个创建对象的接口
工厂模式适用场景:
1.对象构建复杂
2.需要依赖具体环境创建不同实例
3.处理大量具有相同属性的小对象
2.回调
把一个函数作为参数传入另一个函数,并且在函数中调用,称之为回调
//红绿灯
function showLight(fn,fn1,fn2){
fn(fn1,fn2);
}
function showRed(fn,fn1){
setTimeout(function(){
console.log("红灯");
if(fn) fn(fn1,showRed);
},2000);
}
function showGreen(fn,fn1){
setTimeout(function(){
console.log("绿灯");
if(fn) fn(fn1,showGreen);
},2000);
}
function showYellow(fn,fn1){
setTimeout(function(){
console.log("黄灯");
if(fn) fn(fn1,showYellow);
},2000);
}
showLight(showGreen,showYellow,showRed)
3.递归
函数内部调用函数自身即为递归
递归需要有条件跳出或者有条件进入,并且条件中递归次数不能过多
尾递归和非尾递归
当函数执行到最尾部时,递归,递归执行的代码后面再无执行内容,这种清空下不保存原函数内的环境,称为尾递归
如果递归执行函数后续还有内容,需要保留原函数的执行环境,叫做非尾递归