Javascript中匿名函數(shù)的調(diào)用與寫法實(shí)例詳解(多種)
Javascript中定義函數(shù)的方式有多種,函數(shù)直接量就是其中一種。如var fun = function(){},這里function如果不賦值給fun那么它就是一個(gè)匿名函數(shù)。好,看看匿名函數(shù)的如何被調(diào)用。
方式1,調(diào)用函數(shù),得到返回值。強(qiáng)制運(yùn)算符使函數(shù)調(diào)用執(zhí)行
(function(x,y){
alert(x+y);
return x+y;
}(3,4));
方式2,調(diào)用函數(shù),得到返回值。強(qiáng)制函數(shù)直接量執(zhí)行再返回一個(gè)引用,引用再去調(diào)用執(zhí)行
(function(x,y){
alert(x+y);
return x+y;
})(3,4);
這種方式也是很多庫愛用的調(diào)用方式,如jQuery,Mootools。
方式3,使用void
void function(x) {
x = x-1;
alert(x);
}(9);
方式4,使用-/+運(yùn)算符
-function(x,y){
alert(x+y);
return x+y;
}(3,4);
+function(x,y){
alert(x+y);
return x+y;
}(3,4);
--function(x,y){
alert(x+y);
return x+y;
}(3,4);
++function(x,y){
alert(x+y);
return x+y;
}(3,4);
方式5,使用波浪符(~)
~function(x, y) {
alert(x+y);
return x+y;
}(3, 4);
方式6,匿名函數(shù)執(zhí)行放在中括號內(nèi)
[function(){
console.log(this) // 瀏覽器得控制臺輸出window
}(this)]
方式7,匿名函數(shù)前加typeof
typeof function(){
console.log(this) // 瀏覽器得控制臺輸出window
}(this)
方式8,匿名函數(shù)前加delete
delete function(){
console.log(this) // 瀏覽器得控制臺輸出window
}(this)
方式9,匿名函數(shù)前加void
void function(){
console.log(this) // 瀏覽器得控制臺輸出window
}(this)
方式10,使用new方式,傳參
new function(win){
console.log(win) // window
}(this)
方式11,使用new,不傳參
new function(){
console.log(this) // 這里的this就不是window了
}
方式12,逗號運(yùn)算符
function(){
console.log(this) // window
}();
方式13,按位異或運(yùn)算符
^function(){
console.log(this) // window
}();
方式14,比較運(yùn)算符
function(){
console.log(this) // window
}();
最后看看錯(cuò)誤的調(diào)用方式
function(x,y){
alert(x+y);
return x+y;
}(3,4);
匿名函數(shù)的N種寫法如下所示
匿名函數(shù)沒有實(shí)際名字,也沒有指針,怎么執(zhí)行?
關(guān)于匿名函數(shù)寫法,很發(fā)散~
+號是讓函數(shù)聲明轉(zhuǎn)換為函數(shù)表達(dá)式。匯總一下
最常見的用法:
代碼如下:
(function() {
alert('water');
})();
當(dāng)然也可以帶參數(shù):
代碼如下:
(function(o) {
alert(o);
})('water');
想用匿名函數(shù)的鏈?zhǔn)秸{(diào)用?很簡單:
代碼如下:
(function(o) {
console.log(o);
return arguments.callee;
})('water')('down');
常見的匿名函數(shù)都知道了,看看不常見的:
代碼如下:
~(function(){
alert('water');
})();//寫法有點(diǎn)酷~
代碼如下:
void function(){
alert('water');
}();//據(jù)說效率最高~
代碼如下:
+function(){
alert('water');
}();
代碼如下:
-function(){
alert('water');
}();
代碼如下:
~function(){
alert('water');
}();
代碼如下:
!function(){
alert('water');
}();
代碼如下:
(function(){
alert('water');
}());//有點(diǎn)強(qiáng)制執(zhí)行的味道~
以上給大家分享了Javascript中匿名函數(shù)的調(diào)用與寫法,希望對大家有所幫助。
相關(guān)文章
動(dòng)態(tài)創(chuàng)建的表格單元格中的事件實(shí)現(xiàn)代碼
好久沒有搞網(wǎng)頁了,今天重新弄了一個(gè) ,做個(gè)動(dòng)態(tài)表格,具體的實(shí)現(xiàn)代碼,大家可以自己寫吧2008-12-12
js實(shí)現(xiàn)上下左右鍵盤控制div移動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)上下左右鍵盤控制div移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
JS小功能(setInterval實(shí)現(xiàn)圖片效果顯示時(shí)間)實(shí)例代碼
這篇文章主要介紹了setInterval實(shí)現(xiàn)圖片效果顯示時(shí)間實(shí)例代碼,有需要的朋友可以參考一下2013-11-11
JS獲取當(dāng)前網(wǎng)址、主機(jī)地址項(xiàng)目根路徑
本文為大家提供JS如何獲取當(dāng)前網(wǎng)址、主機(jī)地址之后的目錄及項(xiàng)目根路徑的方法,喜歡的朋友可以收藏下2013-11-11

