javascript
JS中[感叹号]function(){}()的理解
這種寫法,是一種`立即執(zhí)行函數(shù)`的寫法,即IIFE等設計模式。這種函數(shù)在函數(shù)定義的地方就直接執(zhí)行了。
理解IIFE設計模式的關鍵是要認識到,在ES6之前,JavaScript僅具有函數(shù)作用域(因此缺少塊作用域),并通過閉包內部的引用傳遞值。ES6之后情況已不再如此,因為JavaScript的ES6版本使用let和const關鍵字實現(xiàn)了塊作用域。
(function(){})()是匿名函數(shù),主要利用函數(shù)內的變量作用域,避免產生全局變量,影響整體頁面環(huán)境,增加代碼的兼容性。
(function(){})是一個標準的函數(shù)定義,但是沒有賦值給任何變量。所以是沒有名字的函數(shù),叫匿名函數(shù)。沒有名字就無法像普通函數(shù)那樣隨時隨地調用了,所以在他定義完成后就馬上調用他,后面的括號()是運行這個函數(shù)的意思。
如下幾種寫法作用是相同的:
!function () { /* ... */ }(); ~function () { /* ... */ }(); -function () { /* ... */ }(); +function () { /* ... */ }(); void function () { /* ... */ }(); (function (){/*...*/}()); (function (){/*...*/})();所以: !function(){}寫法和(function(){})()是相同的
!function(){}()
1.函數(shù)后的();表示要執(zhí)行這個函數(shù);
2.而();要求前面必須是一個表達式。(最后有js表達式的定義)。
3.所以"!"的作用是將function(){}函數(shù)體轉為一個函數(shù)表達式。
總結
以上是生活随笔為你收集整理的JS中[感叹号]function(){}()的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js声明变量的三种方式
- 下一篇: 哪款浏览器好用_碉堡了!火狐浏览器发布重