javascript中函数模式的详细解决方案
Javascript设计模式的作用是提高代码的可重用性、可读性和更容易的维护和扩展。在Javascript中,函数是一类对象,这意味着他可以作为一个参数传递给其他函数;此外,这个函数还可以提供一个范围。
创建函数的语法
命名函数表达式
复制代码代码如下所示:
命名函数表达式
函数添加(a,b){
返回A+;
};
功能性表达
复制代码代码如下所示:
匿名函数
函数(a,b){
返回A+;
};
赋值给变量的值是函数定义本身。
函数的声明
复制代码代码如下所示:
函数(){
这里的代码
这里您可以不需要分号。
在后面的分号中,函数表达式应该总是使用分号,而函数的声明不需要分号结束。
函数声明和表达式
起重作用(起重)
函数声明的行为与命名函数表达式不同,其区别在于提升行为,并参见下面的示例:
复制代码代码如下所示:
全局函数
函数!;}
功能栏(){ alert(全球酒吧');}
函数提升(){
console.log(类Foo); / /功能
console.log(typeof吧); / /未定义
()!
酒吧(); / /列表'undefined'is不是一个函数
变富并实现/提升
函数(){
警报(乡土Foo!;
}
bar变量仅为 /升级功能不起作用。
函数(){()
警报(乡土吧!;
};
}
起重机();
对于所有变量,无论函数的主体在何处被声明,它都会被提升到函数的顶部。函数的普遍应用的原因是函数只是赋值给变量的对象。
推广,顾名思义,就是提到以下。在JS的东西(变量或函数)的定义,在后面举到前面的定义,你可以看到从上面的例子中,函数内的葫芦移动到顶部的Foo和Bar,从而覆盖全球食品和酒吧的功能。局部功能栏与富之间的区别是,foo是升到最高,可以正常运行,而酒吧的定义()不提拔。只有它的语句被提升,所以当执行bar()时,结果是未定义的而不是函数。
即时功能模式
一个函数也是对象,所以它们可以被用来作为一个返回值。自我强化功能的好处是直接声明一个匿名函数,使用立即使用,一旦你不功能保存一个定义,并避免命名冲突,JS没有命名空间,因此很容易发生名称冲突,一旦命名冲突最终声明为准。
模式1:
复制代码代码如下所示:
(函数(){())
var a=1;
返回函数(){
警报(2);
};
}(()());2,第一个实现第二轮括号后,括号执行内部匿名函数。
模式二:自执行函数变量的方向
复制代码代码如下所示:
var =(函数()){()
返回2;
});
警报(结果);结果指向自执行函数返回值的2;如果结果()弹出,则出错。
模式三:嵌套函数
复制代码代码如下所示:
var =(函数()){()
返回函数(){
返回2;
};
});
警报(结果));当警报(结果)弹出2;警报(结果())弹出函数(){返回2 }
模式四:自执行函数将其返回值赋给变量。
复制代码代码如下所示:
var =(函数(){())
var a=1;
返回函数(){
返回+1;
}
}());返回返回变量后执行的自执行函数
警报((abc));如果警报(abc)返回语句将在代码后面弹出;如果执行的是abc()函数,返回。
模式五:函数本身,递归
复制代码代码如下所示:
这是一个自我执行功能,内部执行功能,递归的。
函数abc(){ abc();}
回调模式
回调函数:当你把函数()作为参数传递给另一个函数调用()时,调用()可以在某个点执行(或调用)写(),在这种情况下,写()被称为回调函数(回调函数)。
异步事件监听器
回调模式有很多用途,例如,当将事件侦听器附加到页面上的元素时,它实际上是一个指针,提供回调函数,在事件发生时将调用它:
复制代码代码如下所示:
Document.addEventListener(单击
The above code example shows the document click event to be passed to the callback function console.log () in a bubble mode
Javascript特别适合事件驱动编程,因为回调模式支持异步运行的程序。
超时地
另一个例子,使用回调模式是通过浏览器的窗口对象提供方法setTimeout()和超时:setInterval(),如:
复制代码代码如下所示:
var =函数(){()
console.log(100ms会问…);
};
setTimeout(电话,100);
图书馆的回调模式
在设计JS库时,回调函数会很方便。一个库的代码应该使用可重用的代码尽可能回收可以帮助实现这一概括。当我们设计了一个巨大的JS库,事实上,用户不需要他们中的大多数,我们可以专注于核心功能和形式提供回调回调,这将使它更容易为我们建立、拓展、和自定义库的方法。
咖喱
库里技术是一种通过将多个参数填充到函数体中来将函数转换成一个新的简化(不太可接受)函数的技术。
简言之,Curry是一个转换过程,也就是说,我们执行函数转换的过程:
复制代码代码如下所示:
基于咖喱的添加()函数
函数添加(x,y){
无功oldx = X,Y = y;
如果(typeof的Y = = undefined){
返回功能(新){
返回oldx +期货交易所;
};
}
完整应用程序
返回x y;
}
测试
百加(5); / /输出功能
添加(3)(4);7
创建和存储一个新函数
无功add2000 =加(2000);
add2000(10); / /输出2010
当添加()被称为第一次,它创建一个返回的内部功能关闭。关闭门店原有的X和私有变量y的值,oldx和老人。
现在,我们将能够使用任意函数的一般方法,例如:
复制代码代码如下所示:
公共函数
函数添加(x,y){
返回x y;
}
函数咖喱以获得新功能
无功newadd =测试(增加5);
newadd(4); / / 9
/另一个选项,直接调用新函数
测试(添加,6)(7);输出13
何时使用咖喱
当发现相同的函数调用时,大多数传递的参数是相同的,那么这个函数可能是咖喱转换的一个很好的候选参数。