javascript之類比塊級範圍

來源:互聯網
上載者:User

標籤:javascrip   匿名函數   解析   ++   記憶體   put   div   開始   efi   

在java、C++等語言中,變數i在會在for迴圈的語句塊中定義,迴圈一旦結束,變數i就會被銷毀。可是在javaScript中,從定義開始,就可以在函數內部隨處存取。比如

function output(){  for(var i=0; i<10; i++){  }  alert(i); //10  var i;  //重新聲明  alert(i); //10}

javaScript會對後續i的聲明視而不見,如果後續聲明中有變數初始化還是會執行。可以使用匿名函數來模仿塊級範圍,或者使用ES6的let命令。

  用塊級範圍的匿名函數的文法如下:

(function(){  //塊級範圍}) ();

將函式宣告儲存在一對圓括弧中,表示它實際上是一個函數運算式,緊隨其後的另一個圓括弧會立即調用這個函數。

function output(){  (function(){       for(var i=0; i<10; i++){  }})();  alert(i); //error  var i;  //重新聲明  alert(i); //undefined}

  這種技術經常在範圍中被用在函數外部,從而限制向全域範圍中添加過多的變數和函數。js引擎讀取一段js代碼,首先預解析(這個名字我起的),就是逐行讀取js代碼,尋找全域變數和全域函數,遇到全域變數,把變數的值變為undefind,存在記憶體中,遇到全域函數,直接存在記憶體中,這個過程如果發現語法錯誤,預解析終止。限制全域範圍可以減少記憶體的佔用。

或者使用let命令

function output(){  for(let i=0; i<10; i++){  var i;   alert(i); // undefined}

 

javascript之類比塊級範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.