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);
這種方式也是很多庫(kù)愛用的調(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í)行放在中括號(hào)內(nèi)
[function(){
console.log(this) // 瀏覽器得控制臺(tái)輸出window
}(this)]
方式7,匿名函數(shù)前加typeof
typeof function(){
console.log(this) // 瀏覽器得控制臺(tái)輸出window
}(this)
方式8,匿名函數(shù)前加delete
delete function(){
console.log(this) // 瀏覽器得控制臺(tái)輸出window
}(this)
方式9,匿名函數(shù)前加void
void function(){
console.log(this) // 瀏覽器得控制臺(tái)輸出window
}(this)
方式10,使用new方式,傳參
new function(win){
console.log(win) // window
}(this)
方式11,使用new,不傳參
new function(){
console.log(this) // 這里的this就不是window了
}
方式12,逗號(hào)運(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ā)散~
+號(hào)是讓函數(shù)聲明轉(zhuǎn)換為函數(shù)表達(dá)式。匯總一下
最常見的用法:
代碼如下:
(function() {
alert('water');
})();
當(dāng)然也可以帶參數(shù):
代碼如下:
(function(o) {
alert(o);
})('water');
想用匿名函數(shù)的鏈?zhǔn)秸{(diào)用?很簡(jiǎn)單:
代碼如下:
(function(o) {
console.log(o);
return arguments.callee;
})('water')('down');
常見的匿名函數(shù)都知道了,看看不常見的:
代碼如下:
~(function(){
alert('water');
})();//寫法有點(diǎn)酷~
代碼如下:
void function(){
alert('water');
}();//據(jù)說(shuō)效率最高~
代碼如下:
+function(){
alert('water');
}();
代碼如下:
-function(){
alert('water');
}();
代碼如下:
~function(){
alert('water');
}();
代碼如下:
!function(){
alert('water');
}();
代碼如下:
(function(){
alert('water');
}());//有點(diǎn)強(qiáng)制執(zhí)行的味道~
以上給大家分享了Javascript中匿名函數(shù)的調(diào)用與寫法,希望對(duì)大家有所幫助。
相關(guān)文章
JS實(shí)現(xiàn)基于Sketch.js模擬成群游動(dòng)的蝌蚪運(yùn)動(dòng)動(dòng)畫效果【附demo源碼下載】
這篇文章主要介紹了JS實(shí)現(xiàn)基于Sketch.js模擬成群游動(dòng)的蝌蚪運(yùn)動(dòng)動(dòng)畫效果,涉及Sketch.js插件的使用及HTML5元素的應(yīng)用技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-08-08
js 將json字符串轉(zhuǎn)換為json對(duì)象的方法解析
將json字符串轉(zhuǎn)換為json對(duì)象的方法。在數(shù)據(jù)傳輸過(guò)程中,json是以文本,即字符串的形式傳遞的,而JS操作的是JSON對(duì)象,所以,JSON對(duì)象和JSON字符串之間的相互轉(zhuǎn)換是關(guān)鍵2013-11-11
小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的圖文教程
最近在開發(fā)中遇到了一個(gè)需求,需要獲取小程序的全部數(shù)據(jù),所以這篇文章主要給大家介紹了關(guān)于小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-11-11
AngularJS實(shí)現(xiàn)textarea記錄只能輸入規(guī)定數(shù)量的字符并顯示
AngularJS 是一個(gè) MV* 框架,最適于開發(fā)客戶端的單頁(yè)面應(yīng)用。它不是個(gè)功能庫(kù),而是用來(lái)開發(fā)動(dòng)態(tài)網(wǎng)頁(yè)的框架。接下來(lái)通過(guò)本文給大家介紹AngularJS實(shí)現(xiàn)textarea記錄只能輸入規(guī)定數(shù)量的字符并顯示的相關(guān)內(nèi)容,需要的朋友參考下吧2016-04-04
JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法示例
這篇文章主要介紹了JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法,結(jié)合實(shí)例形式分析了JavaScript樹的深度優(yōu)先遍歷、廣度優(yōu)先遍歷遞歸與非遞歸相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-07-07
微信小程序網(wǎng)絡(luò)請(qǐng)求的封裝與填坑之路
本文主要介紹了關(guān)于小程序網(wǎng)絡(luò)請(qǐng)求的封裝的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04
JavaScript實(shí)現(xiàn)異步獲取表單數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)異步獲取表單數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05

