摘要:作用域作用域分為全局作用域和局部作用域。相互之間的操作并不影響。這里的相當于私有變量,對于每一個對象來講,也都是不同的。作用域鏈的查找規則
es5作用域
function test() { var num = 1; if (true) { num = 2; alert(num); // 2 } alert(num); // 2 }
var scope="global"; function t(){ console.log(scope); // undefined,變量提升 var scope="local" console.log(scope); // local } t();
function Test() { var a = 1; this.b = 1; this.show = function() { alert("a=" + a); alert("b=" + this.b); } this.setValue = function() { a = 2; this.b++; } } var obj1 = new Test(); obj1.show(); // a=1,b=1; var obj2 = new Test(); obj2.setValue(); obj2.show(); // a=2,b=2; obj1.show(); // a=1,b=1; 上面的實例中,a是構造函數內部的一個變量,我們在實例化obj1和obj2之后,發現在實例化對象時,obj1和obj2各有一個作用域,其中的a并不是一份,而是不同的值。相互之間的操作并不影響。這里的a相當于私有變量,對于每一個對象來講,也都是不同的。
(function() { var privateStatic = "privatestatic"; Func = function() { this.setPrivateStatic = function(value) { privateStatic = value; } this.getPrivateStatic = function() { return privateStatic; } } })(); var func1 = new Func(); var func2 = new Func(); console.log(func1.getPrivateStatic()); // privatestatic console.log(func2.getPrivateStatic()); // privatestatic console.log(func1.setPrivateStatic("changed")); console.log(func2.getPrivateStatic()); //changed
(function b() { var c = 1; a(); // c is not defined })() function d() { var c = 2; console.log(c); }; (function b() { var c = 1; d(); // 2 })()js作用域鏈的查找規則
https://www.cnblogs.com/dolph...
http://www.cnblogs.com/dolphi...
https://www.cnblogs.com/lhb25...
http://www.cnblogs.com/zxj159...
https://www.cnblogs.com/syfwh...
https://www.cnblogs.com/myyou...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98157.html
摘要:前言這段時間一直在消化作用域鏈和閉包的相關知識。而作用域鏈則是這套規則這套規則的具體運行。是變量對象的縮寫那這樣放有什么好處呢我們知道作用域鏈保證了當前執行環境對符合訪問權限的變量和函數的有序訪問。 前言:這段時間一直在消化作用域鏈和閉包的相關知識。之前看《JS高程》和一些技術博客,對于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術文章。這也給我的學習上造成了一些困惑,...
摘要:本期推薦文章從作用域鏈談閉包,由于微信不能訪問外鏈,點擊閱讀原文就可以啦。推薦理由這是一篇譯文,深入淺出圖解作用域鏈,一步步深入介紹閉包。作用域鏈的頂端是全局對象,在全局環境中定義的變量就會綁定到全局對象中。 (關注福利,關注本公眾號回復[資料]領取優質前端視頻,包括Vue、React、Node源碼和實戰、面試指導) 本周開始前端進階的第二期,本周的主題是作用域閉包,今天是第6天。 本...
摘要:在此例中,在匿名函數被返回后,它的作用域鏈初始化為包含函數的活動對象和全局變量對象。函數在執行完畢后,其活動對象也不會被銷毀,因為匿名函數的作用域鏈仍然在引用這個活動對象,結果就是只是的執行環境的作用域鏈會被銷毀,其活動對象會留在內存中。 寫在前面 注:這個系列是本人對js知識的一些梳理,其中不少內容來自書籍:Javascript高級程序設計第三版和JavaScript權威指南第六版,...
摘要:變量對象也是有父作用域的。作用域鏈的頂端是全局對象。當函數被調用的時候,作用域鏈就會包含多個作用域對象。當函數要訪問時,沒有找到,于是沿著作用域鏈向上查找,在的作用域找到了對應的標示符,就會修改的值。 一、概要 對于閉包的定義(紅寶書P178):閉包就是指有權訪問另外一個函數的作用域中的變量的函數。 關鍵點: 1、閉包是一個函數 2、能夠訪問另外一個函數作用域中的變量 二、閉包特性 對...
摘要:所以,當在函數中使用全局變量的時候,所產生的代價是最大的,因為全局對象一直處于作用域鏈的最末位置,讀取局部變量是最快的。 什么是作用域 在編程語言中,作用域控制著變量與參數的可見性及生命周期,它能減少名稱沖突,而且提供了自動內存管理(javascript 語言精粹) 靜態作用域 再者,js不像其他的編程語言一樣,擁有著塊級作用域,就像下面一段代碼。 function afunction...
閱讀 2967·2021-11-25 09:43
閱讀 3633·2021-08-31 09:41
閱讀 1237·2019-08-30 15:56
閱讀 2119·2019-08-30 15:55
閱讀 2993·2019-08-30 13:48
閱讀 2816·2019-08-29 15:15
閱讀 984·2019-08-29 15:14
閱讀 2657·2019-08-28 18:26