摘要:一言不合,翠花,上酸菜隨便寫個函數哈你猜會怎么輸出哦,這是為什么呢奧,這個嘛,就是說的塊級作用域問題下面開始回歸正題其實你這樣寫,結果也是一樣留空太暴力了,也是來看看跟閉包結合大法其實,搞了半天,有個更吊炸天的技能,都沒想告訴你,知道為什么
一言不合,
翠花,
上酸菜!
//隨便寫個函數哈 var arr=[]; for(var i=0;i<3;i++){ arr[i]=function(){ return i; } } //你猜會怎么輸出 console.log(arr[0]());//3 console.log(arr[1]());//3 console.log(arr[3]());//3
哦,這是為什么呢?
奧,這個嘛,就是說的塊級作用域問題
下面開始回歸正題:
其實你這樣寫,結果也是一樣:
var arr=[]; for(var i=0;i<3;i++){ //留空 } console.log(i)//太暴力了,也是3!
來看看IIFE跟閉包結合大法:
var arr=[]; for(var i=0;i<3;i++){ (function(i){ arr[i].function(i){ return i; } })(i); } console.log(arr[0]());//0 console.log(arr[1]());//1 console.log(arr[2]());//2
其實,搞了半天,有個更吊炸天的技能,
都沒想告訴你,知道為什么那么多人喜歡ES6,
因為真的非常666:
var arr=[]; for(let i=0;i<3;i++){ arr[i]=function(){ return i; } } //This is a Amazing world! console.log(arr[0]());//0 console.log(arr[1]());//1 console.log(arr[2]());//2
var 要哭了,真的,怎么可以這樣,
卑鄙!下流!無恥!打碼
...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103878.html
摘要:盡可能的使用局部變量,少用全局變量。正確的實現就是在函數體內部使用將聲明成局部變量。在新特性中,引入了塊級作用域這個概念,因此還可以使用,來聲明局部變量。它們共享外部變量,并且閉包還可以更新的值。 變量作用域 作用域,對于JavaScript語言來說無處不在,變量作用域,函數作用域(運行時上下文和定義時上下文),作用域污染等等都跟作用域息息相關,掌握JavaScript作用于規則,可以...
摘要:匿名函數是不能單獨寫的,所以就提不上立即執行了。六立即執行函數在閉包中的應用立即執行函數能配合閉包保存狀態。來看下上節內容中閉包的例子現在,我們來利用立即執行函數來簡化它第一個匿名函數執行完畢后,返回了第二個匿名函數。 前面的閉包中,提到與閉包相似的立即執行函數,感覺兩者還是比較容易弄混吧,嚴格來說(因為犀牛書和高程對閉包的定義不同),立即執行函數并不屬于閉包,它不滿足閉包的三個條件。...
摘要:閉包在我理解是一種比較抽象的東西。所以我寫了一篇博文來方便自己理解閉包。那么現在我們可以解釋一下閉包的第一個定義在計算機科學中,閉包是引用了自由變量的函數。循環中創建閉包在我們使用的關鍵字之前,閉包的一個常見問題就出現在循環中創建閉包。 零. 前言 從我開始接觸前端時就聽說過閉包,但是一直不理解閉包究竟是什么。上網看了各種博客,大家對閉包的說法不一。閉包在我理解是一種比較抽象的東西。所...
摘要:詞法作用域的查找規則是閉包的一部分。因此的確同閉包息息相關,即使本身并不會真的使用閉包。而上面的創建一個閉包,本質上這是將一個塊轉換成一個可以被關閉的作用域。結合塊級作用域與閉包模塊這個模式在中被稱為模塊。 你不知道的JS(上卷)筆記 你不知道的 JavaScript JavaScript 既是一門充滿吸引力、簡單易用的語言,又是一門具有許多復雜微妙技術的語言,即使是經驗豐富的 Jav...
閱讀 2723·2023-04-25 21:26
閱讀 1521·2021-11-25 09:43
閱讀 1956·2019-08-30 15:52
閱讀 937·2019-08-30 14:05
閱讀 2622·2019-08-29 16:10
閱讀 421·2019-08-29 13:48
閱讀 1867·2019-08-29 12:47
閱讀 1306·2019-08-23 18:04