成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

通俗易懂介紹js作用域鏈和閉包,不懂的進!

ddongjian0000 / 1034人閱讀

摘要:作用域作用域分為全局作用域和局部作用域。相互之間的操作并不影響。這里的相當于私有變量,對于每一個對象來講,也都是不同的。作用域鏈的查找規(guī)則

es5作用域
javascript作用域分為全局作用域和局部作用域。在全局作用域內(nèi)定義的就是全局變量,即window對象上的局部變量;局部作用域是函數(shù)作用域,注意是函數(shù)作用域而不是大括號作用域!
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是構(gòu)造函數(shù)內(nèi)部的一個變量,我們在實例化obj1和obj2之后,發(fā)現(xiàn)在實例化對象時,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作用域鏈的查找規(guī)則

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...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98157.html

相關(guān)文章

  • JS基礎知識:變量對象、作用鏈和閉包

    摘要:前言這段時間一直在消化作用域鏈和閉包的相關(guān)知識。而作用域鏈則是這套規(guī)則這套規(guī)則的具體運行。是變量對象的縮寫那這樣放有什么好處呢我們知道作用域鏈保證了當前執(zhí)行環(huán)境對符合訪問權(quán)限的變量和函數(shù)的有序訪問。 前言:這段時間一直在消化作用域鏈和閉包的相關(guān)知識。之前看《JS高程》和一些技術(shù)博客,對于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術(shù)文章。這也給我的學習上造成了一些困惑,...

    Keven 評論0 收藏0
  • 【進階2-1期】深入淺出圖解作用鏈和閉包

    摘要:本期推薦文章從作用域鏈談閉包,由于微信不能訪問外鏈,點擊閱讀原文就可以啦。推薦理由這是一篇譯文,深入淺出圖解作用域鏈,一步步深入介紹閉包。作用域鏈的頂端是全局對象,在全局環(huán)境中定義的變量就會綁定到全局對象中。 (關(guān)注福利,關(guān)注本公眾號回復[資料]領取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導) 本周開始前端進階的第二期,本周的主題是作用域閉包,今天是第6天。 本...

    levius 評論0 收藏0
  • js知識梳理6:關(guān)于函數(shù)的要點梳理(2)(作用鏈和閉包)

    摘要:在此例中,在匿名函數(shù)被返回后,它的作用域鏈初始化為包含函數(shù)的活動對象和全局變量對象。函數(shù)在執(zhí)行完畢后,其活動對象也不會被銷毀,因為匿名函數(shù)的作用域鏈仍然在引用這個活動對象,結(jié)果就是只是的執(zhí)行環(huán)境的作用域鏈會被銷毀,其活動對象會留在內(nèi)存中。 寫在前面 注:這個系列是本人對js知識的一些梳理,其中不少內(nèi)容來自書籍:Javascript高級程序設計第三版和JavaScript權(quán)威指南第六版,...

    aristark 評論0 收藏0
  • javascript系列--javascript深入淺出圖解作用鏈和閉包

    摘要:變量對象也是有父作用域的。作用域鏈的頂端是全局對象。當函數(shù)被調(diào)用的時候,作用域鏈就會包含多個作用域?qū)ο蟆.敽瘮?shù)要訪問時,沒有找到,于是沿著作用域鏈向上查找,在的作用域找到了對應的標示符,就會修改的值。 一、概要 對于閉包的定義(紅寶書P178):閉包就是指有權(quán)訪問另外一個函數(shù)的作用域中的變量的函數(shù)。 關(guān)鍵點: 1、閉包是一個函數(shù) 2、能夠訪問另外一個函數(shù)作用域中的變量 二、閉包特性 對...

    Jensen 評論0 收藏0
  • js中的作用鏈和閉包

    摘要:所以,當在函數(shù)中使用全局變量的時候,所產(chǎn)生的代價是最大的,因為全局對象一直處于作用域鏈的最末位置,讀取局部變量是最快的。 什么是作用域 在編程語言中,作用域控制著變量與參數(shù)的可見性及生命周期,它能減少名稱沖突,而且提供了自動內(nèi)存管理(javascript 語言精粹) 靜態(tài)作用域 再者,js不像其他的編程語言一樣,擁有著塊級作用域,就像下面一段代碼。 function afunction...

    LucasTwilight 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<