自執行函式的理解
今天抽空研究一下jquery的原始碼,發現jquery的整體框架是從自執行函式開始的。(function(e, t) {})(window),今天就來好好研究下這個自執行函式是怎麼回事。
首先區分兩個概念,函式宣告,函式表示式。
function fn(){};這種是函式宣告的最通俗寫法,根本的標誌是需要有個函式名,函式宣告的好處,是可以在函式宣告之後,在程式碼執行的任何位置呼叫fn();都可以執行這段程式碼,fn();function fn(){};
再來看一下,函式表示式,var fn = function(){}; 將一個匿名函式賦值給fn。和函式宣告的區別是,函式的呼叫只能在函式表示式的後面,否則會產生報錯。
var fn = function(){} ; fn();
OK,簡單討論了下函式宣告和函式表示式的區別,再來看下今天討論的豬腳自執行函式。
( function(){…} )()和( function (){…} () ),這兩種是自執行函式的兩種常見寫法,抽出相同的地方我們來分析一下;
一、就是函式體的後面都加的有小括號;二、最關鍵的部分,函式體的部分都是表示式,自身都處於括號的包裹之中。
(function(arg){alert(arg)})(aaa);!function(arg){alert(arg)}(aaa);+function(arg){alert(arg)}(aaa);同樣的把+,!替換成~,-,*
函式體依舊是表示式,整個函式依舊自執行。所以最後總結,自執行函式的首要特點是,函式體必須為函式表示式。
關於自執行函式的特點,簡單提一個關於作用域的問題。可以通過自執行函式構造一個變數的容器,容器內部可以訪問外部的變數,
而外部卻訪問不到自執行函式內部的變數。有效避免了在全域性或區域性作用域中宣告的一些變數,可能會被其他人不小心用同名的變數給覆蓋掉。
相關文章
- 深入理解 函式、匿名函式、自執行匿名函式函式
- 自執行函式函式
- JavaScript 匿名立即自執行函式JavaScript函式
- 胡扯JS系列-匿名函式的自動執行JS函式
- js中自執行函式的怪異行為研究JS函式
- 立即執行函式函式
- 理解 PostgreSQL 的 count 函式的行為SQL函式
- (未完成)APC函式的執行,分析 KiDeliverApc 函式函式IDE
- 深入理解JavaScript執行上下文、函式堆疊、提升的概念JavaScript函式
- python函式每日一講 - exec執行函式Python函式
- 閉包函式(匿名函式)的理解函式
- 【譯】理解Javascript函式執行—呼叫棧、事件迴圈、任務等JavaScript函式事件
- 鉤子函式的執行機理函式
- js函式執行過程的探究JS函式
- MySQL 對window函式執行sum函式疑似BugMySql函式
- js立即執行函式原理JS函式
- 多執行緒常用函式執行緒函式
- 03-立即執行函式函式
- JavaScript 匿名函式與具名函式執行效率比較JavaScript函式
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- React 中 render 函式的執行時機React函式
- 關於執行緒的幾個函式執行緒函式
- 前端進階-執行時函式前端函式
- js解惑-函式執行順序JS函式
- 立即執行函式(IIFE)&&閉包函式
- Vue父子元件生命週期執行順序及鉤子函式的個人理解Vue元件函式
- 遞迴函式的理解遞迴函式
- 執行建構函式中指定的任務函式
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- JS小知識——立即執行函式JS函式
- 圖片載入完執行函式函式
- Golang時間函式及測試函式執行時間案例Golang函式
- [譯]深入理解JavaScript函式執行—呼叫棧,事件迴圈和任務等JavaScript函式事件
- 理解Underscore中的_.bind函式函式
- 理解Python中的Lambda函式Python函式
- JS的學習理解--->函式JS函式
- 理解Underscore中的flatten函式函式
- 關於count函式的理解函式
- 回撥函式的理解(一)函式