當前位置:
首頁 >
ES5-7 立即执行函数、闭包深入、逗号运算符
發布時間:2023/12/10
36
豆豆
生活随笔
收集整理的這篇文章主要介紹了
ES5-7 立即执行函数、闭包深入、逗号运算符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 立即執行函數
- 定義在全局的函數只有關閉瀏覽器或者退出程序才會釋放
- IIFE: Immediately-Invoked Function Expression
- 解決頁面加載自動執行,執行完成后立即釋放(避免了只會執行一次的內容一直存在于全局)
- IIFE用匿名函數或者函數聲明(會忽略函數名)都是一樣的效果,執行完成后立即釋放
- 一定是表達式才能被執行符號執行
- 表達式會忽略函數名 → 函數表達式如果命名了a,不會被聲明
- 連續寫2個立即執行函數,要用分號間隔(習慣是在最前面加分號)
延伸:函數名
- 總結:找名字無限制,調用有限制
- 表達式后的函數若有名字a,調用.name打印出a(不管在函數內部還是外部,.name都能獲得名字)
- 延伸 聲明變量test若是匿名函數,調用.name打印出test
- 但直接打印a總是會報錯,因為a沒有被聲明
- 題目-這里可沒有函數,無形參,這個題目考的是,表達式會忽略函數名
1h22min
- 立即執行函數寫法
- 函數聲明不能直接調用,會報語法錯誤:js將function關鍵字當做一個函數聲明的開始,而函數聲明后面不能跟圓括號
- 函數聲明 → 表達式:在前面加 + - ! || &&
- 不報錯,當括號內有值,js引擎認為這是表達式
- 將 IIFE 分配給一個變量,不是存儲 IIFE 本身,而是存儲 IIFE 執行后返回的結果。
- 函數表達式可以直接加()調用,也是立即執行 函數聲明不行,但表達式可以直接加()
2. 閉包深入
- 打印10個10
- 在test內部var i是局部變量
- test執行結束,i值為10,且生成了10個閉包
- 每個閉包拉扯著test執行期間的AO(含i、arr)
- test執行結束,i值為10
- 改成立即執行,則不必聲明、return arr了,函數執行完就被銷毀了
- 或者再用立即執行函數包裹一層
- 應用:點擊li打印對應的下標
- 累加器
- 學生名單管理
3. 逗號運算符
- 只返回最后一個逗號后的內容
總結
以上是生活随笔為你收集整理的ES5-7 立即执行函数、闭包深入、逗号运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用系统工具sxstrace检查缺少的VC
- 下一篇: ES5-8 闭包高级、对象、构造函数、实