精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript變量、作用域及內存詳解

開發 前端
如果賦值的是引用類型的值,則必須在堆內存中為這個值分配空間。由于這種值的大小不固定(對象有很多屬性和方法),因此不能把他們保存到棧內存中。但內存地址大小是固定的,因此可以將內存地址保存在棧內存中。

基本類型值有:undefined,NUll,Boolean,Number和String,這些類型分別在內存中占有固定的大小空間,他們的值保存在棧空間,我們通過按值來訪問的。

(1)值類型:數值、布爾值、null、undefined。
(2)引用類型:對象、數組、函數。

如果賦值的是引用類型的值,則必須在堆內存中為這個值分配空間。由于這種值的大小不固定(對象有很多屬性和方法),因此不能把他們保存到棧內存中。但內存地址大小是固定的,因此可以將內存地址保存在棧內存中。

<script type="text/javascript”> var box = new Object(); //創建一個引用類型 var box = "trigkit4"; //基本類型值是字符串 box.age = 21; //基本類型值添加屬性很怪異,因為只有對象才可以添加屬性。 alert(box.age); //不是引用類型,無法輸出; </script>

簡而言之,堆內存存放引用值,棧內存存放固定類型值。“引用”是一個指向對象實際位置的指針。

在這里需注意的是,引用指向的是具體的對象,而不是另一個引用。

這里的對象可以是字符串對象,數字對象,數組對象等

 

  1. <script type="text/javascript"
  2.     var man = new Object();//man指向了棧內存的空間地址 
  3.     man.name = "Jack"
  4.     var man2 = man;//man2獲得了man的指向地址 
  5.  
  6.     alert(man2.name);//兩個都彈出Jack 
  7.     alert(man.name); 
  8. </script> 

復制變量值

再看下面這個例子:

 

  1. <script type="text/javascript"
  2.     var man = new Object();//man指向了棧內存的空間地址 
  3.     man.name = "Jack"
  4.     var man2 = man;//man2獲得了man的指向地址 
  5.  
  6.     man2.name = "ming";//因為他們都指向同一個object,同一個name,不管修改誰,大家都修改了 
  7.     alert(man2.name);//兩個都彈出ming 
  8.     alert(man.name); 
  9. </script> 

由以上可以得出:在變量復制方面,基本類型和引用類型也有所不同,基本類型復制的是值本身,而引用類型復制的是地址。

傳遞參數

ECMAScript中,所有函數的參數都是按值傳遞的,

 

  1. <script type="text/javascript"
  2.      function box(num){      //按值傳遞 
  3.          num+=10; 
  4.          return num; 
  5.      } 
  6.  
  7.      var num = 10; 
  8.      var result = box(num); 
  9.      alert(result);  //如果是按引用傳遞,那么函數里的num會成為類似全局變量,把外面的number替換掉 
  10.      alert(num);    //也就是說,***應該輸出20(這里輸出10) 
  11. </script> 

js沒有按引用傳遞的,如果存在引用傳遞的話,那么函數內的變量將是全局變量,在外部也可以訪問。但這明顯是不可能的。

執行環境及作用域

執行環境是javascript中最為重要的概念之一,執行環境定義了變量或函數有權訪問其他數據。

全局執行環境是最外圍的執行環境,在web瀏覽器中,全局執行環境是window對象,因此,所有的全局變量的函數都是作為window的屬性和方法創建的。

 

  1. <script type="text/javascript"
  2.       var name = "Jack";           //定義全局變量 
  3.       function setName(){ 
  4.           return "trigkit4"
  5.       } 
  6.  
  7.       alert(window.name);        //全局變量,最外圍,屬于window屬性 
  8.       alert(window.setName());  //全局函數,最外圍,屬于window方法 
  9. </script> 

 

當執行環境內的代碼執行完畢后,該環境被銷毀,保存其中的變量和函數也隨之銷毀,如果是全局環境,需所有程序執行完畢或網頁完畢后才會銷毀。

去掉var的局部變量

 

  1. <script type="text/javascript"
  2.       var name = "Jack"
  3.       function setName(){ 
  4.           name = "trigkit4";   //去掉var變成了全局變量 
  5.       } 
  6.  
  7.       setName(); 
  8.       alert(name);//彈出trigkit4 
  9. </script> 

通過傳參,也是局部變量

 

  1. <script type="text/javascript"
  2.       var name = "Jack"
  3.       function setName(name){    //通過傳參,也是局部變量 
  4.           alert(name); 
  5.       } 
  6.  
  7.       setName("trigkit4");//彈出trigkit4 
  8.       alert(name);//彈出Jack 
  9. </script> 

函數體內還包含函數,只有這個函數才可以訪問內一層的函數

 

  1. <script type="text/javascript"
  2.      var name = "Jack"
  3.       function setName(){ 
  4.           function setYear(){    //setYear()方法的作用域在setName()內 
  5.               return 21; 
  6.           } 
  7.       } 
  8.       alert(setYear());//無法訪問,出錯  
  9. </script> 

可以通過如下方法進行訪問:

 

  1. <script type="text/javascript"
  2.      var name = "Jack"
  3.       function setName(){ 
  4.           function setYear(){    //setYear()方法的作用域在setName()內 
  5.               return 21; 
  6.           } 
  7.           return setYear(); 
  8.       } 
  9.       alert(setName()); //彈出21 
  10. </script> 

再一個作用域例子:

 

  1. <script type="text/javascript"
  2.      var name = "Jack"
  3.       function setName(){ 
  4.           function setYear(){    //setYear()方法的作用域在setName()內 
  5.               var b = "hi";     //變量b的作用域在setYear()內 
  6.               return 21; 
  7.           } 
  8.           alert(b);//無法訪問  
  9.       } 
  10. </script> 

當代碼在一個環境中執行的時候,就會形成一種叫做作用域鏈的東西,它的用途是保證對執行環境中有訪問權限的變量和函數進行有序訪問(指按照規則層次來訪問),作用域鏈的前端,就是執行環境的變量對象。

作用域

變量沒有在函數內聲明或者聲明的時候沒有帶var就是全局變量,擁有全局作用域,window對象的所有屬性擁有全局作用域;在代碼任何地方都可以訪問,函數內部聲明并且以var修飾的變量就是局部變量,只能在函數體內使用,函數的參數雖然沒有使用var但仍然是局部變量。

沒有塊級作用域

 

  1. // if語句: 
  2.  
  3. <script type="text/javascript"
  4. if(true){                        //if語句的花括號沒有作用域的功能。 
  5.  
  6. var box = "trigkit4"
  7. alert(box);//彈出 trigkit4 
  8. </script> 

 

for循環語句也是如此。

變量的查詢

在變量的查詢中,訪問局部變量要比全局變量來得快,因此不需要向上搜索作用域鏈。

如下例子:

 

  1. <script type="text/javascript"
  2.      var name = "Jack"
  3.       function setName(){ 
  4.            var name = "trigkit4"
  5.            return name;  //從底層向上搜索變量 
  6.     } 
  7.     alert(setName());       
  8. </script> 

每個環境都可以向上搜索作用域鏈,以查詢變量和函數名;但任何環境都不能通過向下搜索作用域鏈而進入另一個執行環境。在這里,如果去掉var name = "trigkit4",那么將彈出“Jack”

內存問題

javascript具有自動垃圾回收機制,一旦數據不再使用,可以將其設為”null”來釋放引用

循環引用

一個很簡單的例子:一個DOM對象被一個Javascript對象引用,與此同時又引用同一個或其它的Javascript對象,這個DOM對象可能會引發內存泄露。這個DOM對象的引用將不會在腳本停止的時候被垃圾回收器回收。要想破壞循環引用,引用DOM元素的對象或DOM對象的引用需要被賦值為null

閉包

在閉包中引入閉包外部的變量時,當閉包結束時此對象無法被垃圾回收(GC)。

var a = function() {
  var largeStr = new Array(1000000).join('x');
  return function() {
    return largeStr;
  }
}();

DOM泄露

當原有的COM被移除時,子結點引用沒有被移除則無法回收。

var select = document.querySelector;
var treeRef = select('#tree');

//在COM樹中leafRef是treeFre的一個子結點
var leafRef = select('#leaf');
var body = select('body');

body.removeChild(treeRef);

//#tree不能被回收入,因為treeRef還在
//解決方法:
treeRef = null;

//tree還不能被回收,因為葉子結果leafRef還在
leafRef = null;

//現在#tree可以被釋放了。

Timers計(定)時器泄露

定時器也是常見產生內存泄露的地方:

 

  1. for (var i = 0; i < 90000; i++) { 
  2.   var buggyObject = { 
  3.     callAgain: function() { 
  4.       var ref = this
  5.       var val = setTimeout(function() { 
  6.         ref.callAgain(); 
  7.       }, 90000); 
  8.     } 
  9.   } 
  10.  
  11.   buggyObject.callAgain(); 
  12.   //雖然你想回收但是timer還在 
  13.   buggyObject = null

調試內存

Chrome自帶的內存調試工具可以很方便地查看內存使用情況和內存泄露,在 Timeline -> Memory 點擊record即可。

責任編輯:張燕妮 來源: trigkit4
相關推薦

2011-04-18 09:31:35

JavaScript

2013-09-05 10:07:34

javaScript變量

2015-08-18 13:42:42

js作用域鏈變量

2021-10-28 10:26:35

Javascript 高階函數前端

2024-03-14 11:27:16

C++變量編程

2011-09-06 09:56:24

JavaScript

2019-03-13 08:00:00

JavaScript作用域前端

2020-12-16 11:09:27

JavaScript語言開發

2015-07-08 10:25:05

Javascript上下文作用域

2017-09-14 13:55:57

JavaScript

2021-03-09 08:50:58

JavaScript前端作用域

2010-01-07 16:16:03

VB.NET變量作用域

2011-03-18 09:27:00

Spring

2023-06-28 08:34:02

Bind()函數JavaScript

2020-11-19 07:49:24

JS變量作用域

2015-07-21 13:39:58

Javascript作用域

2011-05-12 18:26:08

Javascript作用域

2021-06-02 07:02:42

js作用域函數

2009-06-01 11:16:48

PHP網站開發變量作用域

2010-02-03 16:42:45

C++變量作用域
點贊
收藏

51CTO技術棧公眾號

精品国产电影一区二区| 国产69精品久久99不卡| 色一区av在线| 日本黄色www| 国产h片在线观看| 91色|porny| 成人精品久久久| 91精品国产乱码在线观看| 成人女性视频| 亚洲成人久久久| 亚洲三级视频网站| 国产经典三级在线| 国产精品嫩草影院av蜜臀| 成人自拍网站| 国产一区二区三区中文字幕| 国产精品日韩| 欧美精品一区二区三区国产精品| 一区二区三区免费在线观看视频| 四虎影视精品永久在线观看| 欧美视频不卡中文| 永久免费看av| av在线电影播放| 成人爽a毛片一区二区免费| 国产精品亚洲欧美导航| 男人的天堂一区二区| 国产精品成人a在线观看| 精品无人区乱码1区2区3区在线| 激情文学亚洲色图| 成人黄色视屏网站| 日韩欧美有码在线| 黄色一级视频在线播放| 国产精品实拍| 国产精品美女www爽爽爽| 久久久国产精品一区二区三区| 99久久精品国产色欲| 美女在线一区二区| 国产成人综合一区二区三区| 97人人澡人人爽人人模亚洲| 欧美特黄一区| 最近2019年好看中文字幕视频 | 国产激情在线播放| 亚洲精品水蜜桃| 一区二区三区四区不卡| 福利在线视频导航| 久久精品一二三| 久久久久久久久久久久久9999| 亚洲国产精品欧美久久| 国产一区二区三区四区在线观看| 国产精品女主播视频| 手机av免费观看| 免播放器亚洲| 日韩av第一页| 国产91国语对白在线| 国产精品综合色区在线观看| 91精品国产91久久久久久吃药 | 色综合久久久久综合体桃花网| 国产美女永久无遮挡| 午夜羞羞小视频在线观看| 中文字幕字幕中文在线中不卡视频| 亚洲人成网站在线播放2019| 尤物网址在线观看| 亚洲人精品午夜| 色一情一乱一乱一区91| 18av在线播放| 亚洲一区二区欧美日韩| 日韩亚洲欧美视频| 校园春色亚洲| 色琪琪一区二区三区亚洲区| 男人搞女人网站| 欧美一级做a| 555www色欧美视频| 日本xxxx免费| 青青草原在线亚洲| 亚洲网在线观看| www.涩涩爱| 亚洲精品成人影院| 久久久久国产视频| 日本va欧美va国产激情| 久久国产高清| 成人啪啪免费看| 亚洲欧美黄色片| 97精品国产露脸对白| 视频一区二区三区在线观看| 黄色成人在线观看| 亚洲国产aⅴ成人精品无吗| 成年人免费在线播放| 久久精品国产精品亚洲毛片| 日韩欧美美女一区二区三区| 一起草在线视频| 久久视频精品| 欧美国产在线视频| 香蕉污视频在线观看| 久久99精品久久久| 国产专区一区二区| 思思99re6国产在线播放| 亚洲狼人国产精品| 欧美牲交a欧美牲交aⅴ免费真| 久久精品xxxxx| 亚洲护士老师的毛茸茸最新章节| 国产欧美一区二区三区在线观看视频| 欧美在线亚洲| 国产成人91久久精品| av免费在线观看不卡| 久久久久综合网| 超碰10000| 久久久成人av毛片免费观看| 日韩精品一区二区三区视频在线观看 | www.色在线| 欧美日韩精品一区二区| 特级西西人体wwwww| 亚洲高清资源在线观看| 国产97免费视| 刘亦菲毛片一区二区三区| 中文字幕欧美国产| 成熟了的熟妇毛茸茸| 国产精品久一| 在线播放日韩欧美| 欧美福利视频一区二区| 国产福利电影一区二区三区| 天天综合狠狠精品| 偷拍自拍在线看| 欧美变态凌虐bdsm| 好吊日在线视频| 久久精品日产第一区二区 | 国产精品久久久久久久第一福利| 青青青青草视频| 亚洲天堂av资源在线观看| 亚洲最大中文字幕| 美女又爽又黄免费视频| 成人性色生活片免费看爆迷你毛片| 一区二区成人国产精品| av高清一区| 日韩第一页在线| 日韩av一二三区| 国产suv精品一区二区三区| 国产精品h视频| 日韩电影免费观看高清完整版在线观看| 精品无人国产偷自产在线| 日韩污视频在线观看| 成人一级片在线观看| 91视频成人免费| 国产一区二区三区国产精品| 北条麻妃在线一区二区| 亚洲手机在线观看| 国产精品网站导航| 欧美在线aaa| 日韩电影免费网站| 国产精品免费一区二区三区都可以| 久青草国产在线| 色综合久久精品| 欧美特黄一区二区三区| 久久九九免费| 午夜精品短视频| 91综合国产| 日韩有码在线播放| 99精品在线视频观看| 又紧又大又爽精品一区二区| 性高潮免费视频| 国产**成人网毛片九色 | 在线播放av网址| 亚洲精品成人无限看| 亚洲bt天天射| 亚洲七七久久综合桃花剧情介绍| 欧美一区二区三区性视频| 玖玖爱这里只有精品| 国产精品 欧美精品| 亚洲熟妇无码av在线播放| 97视频一区| 91av视频在线免费观看| 美女做暖暖视频免费在线观看全部网址91| 色婷婷综合中文久久一本| av网站免费在线看| 奇米色一区二区| 熟妇熟女乱妇乱女网站| 中文在线免费一区三区| 国产91精品不卡视频| 成人在线播放视频| 欧美日韩国产综合久久| 欧美日韩一级在线观看| 99久久综合精品| 国产情侣av自拍| 久久久久久久久久久久久久久久久久| 成人午夜电影在线播放| 亚洲欧美小说色综合小说一区| 尤物yw午夜国产精品视频明星| 国产又黄又粗又猛又爽| 亚洲图片欧美色图| 亚洲第一综合网| 国产一区二区调教| 日本少妇高潮喷水视频| 久久高清免费| 国产精品一区二区三区免费| 国产高潮在线| 久久久国产精品免费| 手机看片一区二区| 欧美日韩视频在线观看一区二区三区| 欧美片一区二区| 91女人视频在线观看| 人人爽人人爽av| 国产精品女主播一区二区三区| 宅男在线精品国产免费观看| 久久中文字幕导航| 成人免费视频网址| 免费电影日韩网站| 九九热这里只有在线精品视| 国产精品一级伦理| 欧美精品一区二区三区高清aⅴ| 亚洲中文无码av在线| 亚洲五码中文字幕| 波多野结衣在线网址| 久久免费电影网| 日本一区二区免费视频| 久国产精品韩国三级视频| 国模无码视频一区二区三区| 雨宫琴音一区二区三区| 日本一区视频在线| 波多野结衣一区二区三区免费视频| 国产精品美女主播| 免费成人直播| 456亚洲影院| 国产91足控脚交在线观看| 日韩中文字幕亚洲| 国产中文字幕在线看| 欧美精品一区二| 国产免费一区二区三区最新不卡 | 久草视频在线免费| 图片区日韩欧美亚洲| 岛国毛片在线观看| 最新久久zyz资源站| 日本一区二区视频在线播放| 91丨porny丨蝌蚪视频| 中国xxxx性xxxx产国| 国产成人av福利| 黑人无套内谢中国美女| 九色综合国产一区二区三区| 久久婷婷国产91天堂综合精品| 国产精品免费看| www黄色日本| 亚洲永久字幕| 欧美 日本 亚洲| 在线亚洲免费| a在线视频观看| 国产视频一区欧美| 欧美精品久久久久久久久久久| 欧美激情偷拍| 成人免费看片'免费看| 欧美激情成人在线| 大荫蒂性生交片| 亚洲激情成人| 欧美 日韩 亚洲 一区| 99热这里只有精品8| 精品这里只有精品| 香蕉视频成人在线观看| 精品国产成人av在线免| 日韩电影在线免费观看| 美女黄色片视频| 美女诱惑一区二区| 久久久久久久久久毛片| 国产高清精品在线| 国产成人小视频| 国产精品视频内| 日韩久久一区二区三区| 国产www精品| 91成人在线| 国产一区视频在线| 欧美黄色一级| 国产成人精品福利一区二区三区| 日韩中文字幕一区二区高清99| 懂色av一区二区三区免费看| 久久国产激情视频| 国产一区福利在线| 在线中文字日产幕| 91在线观看视频| 亚洲av成人无码久久精品 | 欧美日韩国产影院| 亚洲黄网在线观看| 91 com成人网| 日韩一区二区三区不卡| 亚洲人成在线观看网站高清| 网友自拍视频在线| 欧美黄色性视频| 99视频精品在线| 天天色天天综合网| 国产一区二区按摩在线观看| 国产免费a级片| 97精品国产露脸对白| 午夜国产福利视频| 亚洲一本大道在线| 加勒比在线一区| 91精品国产免费| 在线观看xxx| 日韩在线观看免费av| 国精产品一区一区三区mba下载| 欧美一级淫片aaaaaaa视频| 色成人综合网| 久久精品国产精品国产精品污 | 国产这里有精品| 欧美性69xxxx肥| 国产欧美日韩成人| 亚洲跨种族黑人xxx| 99在线视频观看| 国产成人午夜视频网址| 91蜜桃臀久久一区二区| 天堂av一区二区| 夜夜精品视频| 亚洲福利视频免费观看| 黄色片免费在线观看视频| av成人国产| 亚洲视频第二页| 99精品视频中文字幕| a一级免费视频| 欧美日韩综合视频| 午夜老司机福利| 日韩中文在线不卡| 免费成人动漫| 精品欧美一区二区在线观看视频 | 波多野结衣电车痴汉| 精品国产乱码久久久久久夜甘婷婷| porn亚洲| 秋霞午夜一区二区| 久久97久久97精品免视看秋霞| 91久久精品午夜一区二区| 中文字幕在线观看你懂的| 亚洲精品xxx| av观看在线| 91精品在线一区| 日韩欧美网站| 五月婷婷深爱五月| 久久久久一区二区三区四区| 日本熟妇一区二区| 精品日韩一区二区三区| 成人在线免费看黄| 国产在线精品自拍| 成人同人动漫免费观看| 丁香啪啪综合成人亚洲| 91麻豆国产精品久久| 91蜜桃视频在线观看| 欧美成人a∨高清免费观看| 欧洲成人综合网| 97夜夜澡人人双人人人喊| 综合天堂av久久久久久久| 爱豆国产剧免费观看大全剧苏畅| 国产精品久久久久aaaa樱花| 正在播放木下凛凛xv99| 最新91在线视频| 日韩福利影视| 三级在线免费观看| 国产69精品久久99不卡| 五月天婷婷丁香| 亚洲黄色www| 亚洲综合电影| 日韩av高清| 麻豆精品在线视频| 日日噜噜夜夜狠狠久久波多野| 日韩一区二区三区高清免费看看| а√天堂在线官网| 国产91免费视频| 日韩一级大片| 午夜时刻免费入口| 欧美久久久一区| 羞羞视频在线免费国产| 国产精品嫩草在线观看| 国产毛片久久| 99在线观看视频网站| 欧美啪啪一区| 国产精品久久久久久亚洲av| 亚洲图片欧美色图| 欧洲毛片在线| 国产美女精品视频| 欧美国产高清| 亚洲の无码国产の无码步美| 色婷婷亚洲精品| 18视频免费网址在线观看| 亚洲一区精品电影| av成人天堂| 超薄肉色丝袜一二三| 51精品久久久久久久蜜臀| 国产精品186在线观看在线播放| 久久大香伊蕉在人线观看热2| 日韩高清不卡一区二区| 丝袜 亚洲 另类 欧美 重口| 日韩av在线看| 丁香久久综合| 免费一级淫片aaa片毛片a级| 久久精品亚洲一区二区三区浴池| 一区二区的视频| 亚州精品天堂中文字幕| 成人在线电影在线观看视频| 中文字幕久久久久久久| 欧美性猛交xxxx| 国产高清一区二区三区视频| 欧美xxxx黑人又粗又长精品| 久久国产精品第一页| 国产成人亚洲精品自产在线| 久久精品国产一区二区三区| 久久亚洲道色| 在线观看免费的av| 欧美性猛交xxxx黑人| а√天堂资源地址在线下载| 日本视频精品一区|