深入淺析JavaScript函數(shù)前面的加號和嘆號
+function(){}();
這里的加號,也可以替換成!,~等其他一元操作符,其效果相當于:
(function() { console.log("Foo!"); })(); // or (function() { console.log("Foo!"); }());
如果沒有這個加號的話,解析器會認為function是一個函數(shù)聲明的開始,而后面()將會導致語法錯誤。在function前面加上+號時,就變成了一個函數(shù)表達式,而函數(shù)表達式后面又添加了一個()就變成了一個立即執(zhí)行的函數(shù)了。
下面看下js函數(shù)前面感嘆號的作用:
一、JS函數(shù)聲明形式
function fnA(){alert('msg');} //聲明式定義函數(shù)
二、JS函數(shù)表達式形式
var func = function(agr1,arg2){ //創(chuàng)建匿名函數(shù) alert(arg1 + ' ' + arg2); }
三、JS匿名函數(shù)聲明完立即執(zhí)行的常見格式
(function() { /* code */ })();
說明
1、包圍函數(shù)(function(){})的第一對括號向腳本返回未命名的函數(shù),隨后一對空括號立即執(zhí)行返回的未命名函數(shù),括號內(nèi)為匿名函數(shù)的參數(shù)。
2、使用括號包裹定義函數(shù)體,解析器將會以函數(shù)表達式的方式去調(diào)用定義函數(shù)。也就是說,任何能將函數(shù)變成一個函數(shù)表達式的作法,都可以使解析器正確的調(diào)用定義函數(shù)。而 ! 就是其中一個,而 + - || 都有這樣的功能。
3、該函數(shù)的作用主要為 匿名 和 自動執(zhí)行
相關文章
JavaScript中yield實用簡潔實現(xiàn)方式
原以為是一個蠻復雜的題目,想了許久沒思路,當然要實現(xiàn)絕對能實現(xiàn),但如果分析JavaScript腳本或是動態(tài)產(chǎn)生代碼,都太復雜了。2010-06-06微信小程序實現(xiàn)動態(tài)改變view標簽寬度和高度的方法【附demo源碼下載】
這篇文章主要介紹了微信小程序實現(xiàn)動態(tài)改變view標簽寬度和高度的方法,涉及微信小程序事件響應及使用setData針對data數(shù)據(jù)動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下2017-12-12Javascript中Math.max和Math.max.apply的區(qū)別和用法詳解
這篇文章主要介紹了Javascript中Math.max和Math.max.apply的區(qū)別和用法,本文給大家啊介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08