精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美精品成人久久| 丁香六月激情网| 中文字幕在线网站| 欧美日本在线| 精品亚洲男同gayvideo网站| 网站一区二区三区| 国产丝袜在线播放| 国产日韩一级二级三级| 亚洲free性xxxx护士hd| 国产小视频在线免费观看| 怕怕欧美视频免费大全| 这里是久久伊人| 久久成人免费观看| 久cao在线| 97精品久久久久中文字幕 | 日本天码aⅴ片在线电影网站| www.性欧美| 成人写真福利网| 黄色av网站免费观看| 欧美日韩精品一本二本三本| 国产亚洲精品久久久| 青青草原播放器| 欧美日韩尤物久久| 午夜激情一区二区| 欧美日韩在线免费观看视频| 四虎影视在线观看2413| 中文字幕人妻精品一区| 中文一区二区三区四区| 欧美午夜寂寞影院| 欧美三级在线观看视频| 99热国产在线中文| 国产精品少妇自拍| 精品一区二区三区日本| 亚洲av无码一区二区乱子伦| 久久国产尿小便嘘嘘| 日本成熟性欧美| 国产精品第72页| 亚洲91精品| 综合国产在线视频| 中文字幕成人动漫| 美日韩中文字幕| 日韩成人高清在线| 人妻激情偷乱频一区二区三区| 国产精品久久久久久久久久辛辛 | av在线资源站| 久久新电视剧免费观看| 黄色99视频| 天天操天天射天天| aaa国产一区| 国语精品免费视频| 日韩中文字幕影院| 国产69精品一区二区亚洲孕妇| 91免费福利视频| 91片黄在线观看喷潮| 免费在线观看精品| 国产精品综合久久久| 中文字幕+乱码+中文字幕明步| 精品999网站| 日本乱理伦在线| 一道本一区二区| 久久久久久久久91| 久久久久亚洲天堂| 欧美网站在线| 国模吧一区二区三区| 国产黄色片视频| 亚洲欧洲日本mm| 亚洲欧美丝袜中文综合| 日韩一级免费视频| 国产xxx精品视频大全| 99国产在线观看| 高h震动喷水双性1v1| 白白色 亚洲乱淫| 久久久久久九九九九| 九色视频成人自拍| 欧美国产日韩精品免费观看| 亚洲二区三区四区| 成人片在线看| 亚洲成人www| 无码人妻丰满熟妇区五十路百度| 韩国成人动漫| 欧美亚洲一区三区| 丰满人妻一区二区三区53视频| 91夜夜蜜桃臀一区二区三区| 精品日韩av一区二区| 亚洲久久久久久| 黑丝美女一区二区| 久久中文久久字幕| 日本一级淫片色费放| 久久高清一区| 成人免费在线视频网站| 乱色精品无码一区二区国产盗| 2023国产精品| 中文字幕人成一区| 91豆花视频在线播放| 日本乱码高清不卡字幕| 天天av天天操| 欧美激情在线精品一区二区三区| 久久久av电影| 特级毛片www| 国产麻豆精品一区二区| 鲁鲁狠狠狠7777一区二区| 成视频免费观看在线看| 欧美色播在线播放| 国产一伦一伦一伦| 色爱综合av| 久久精品国产一区二区电影| 国产成人精品网址| 成人黄色在线| 亚洲国产精品成人久久蜜臀| 99re久久精品国产| 国产日韩欧美大片| 91九色综合久久| 日韩欧美国产午夜精品| 久久中文字幕视频| 久久久久久九九九九九| 你懂的网址国产 欧美| 日本不卡视频在线播放| 国产高清第一页| 国产欧美日韩视频一区二区| 成熟丰满熟妇高潮xxxxx视频| 91精品一久久香蕉国产线看观看| 亚洲欧美中文字幕| 国产亚洲欧美精品久久久www| 蜜臀91精品一区二区三区| 激情五月综合色婷婷一区二区 | 国产91亚洲精品久久久| 亚洲成人a级网| 免费在线观看一级片| 热久久一区二区| 女同一区二区| 成年在线观看视频| 每日更新av在线播放| 亚洲国产乱码最新视频| 国产一级免费大片| 91麻豆国产自产在线观看亚洲| 全球成人中文在线| 五月激情婷婷综合| 亚洲一区中文日韩| xxxx国产视频| 中文字幕免费精品| 成人高清视频观看www| 成年人在线观看视频| 色综合天天综合网国产成人综合天| 中文字幕人妻一区| 在线成人黄色| 国产乱人伦精品一区二区| 国内老司机av在线| 精品少妇一区二区三区在线播放 | 四虎在线观看| 欧美午夜激情在线| 国产传媒第一页| 免费在线成人| 日本日本精品二区免费| 韩日精品一区二区| 国产亚洲日本欧美韩国| 亚洲av综合一区| 国产精品色眯眯| 99国产精品久久久久久| 在线精品视频在线观看高清| 97se在线视频| 97蜜桃久久| 亚洲精品久久久久| 人妻 日韩精品 中文字幕| 国产午夜亚洲精品午夜鲁丝片| 少妇人妻互换不带套| 日韩一区二区在线| 亚洲一区国产精品| av中文字幕在线观看| 欧美一区二区三区电影| 青青青在线视频| 99热99精品| 国产97色在线 | 日韩| 999精品一区| av电影成人| 超碰一区二区| 三级精品视频久久久久| 99精品在线视频观看| 五月激情六月综合| 日本少妇xxxxx| 国产精品一级黄| 日韩av综合在线观看| 精品盗摄女厕tp美女嘘嘘| 成人久久久久久久| 超碰在线中文字幕| 中文字幕视频一区二区在线有码| 99在线精品视频免费观看软件| 午夜电影一区二区三区| 成人激情五月天| 国产成人精品www牛牛影视| av网站在线观看不卡| 色97色成人| 精品国产中文字幕| 欧美在线se| 97精品国产91久久久久久| 波多野结衣在线影院| 精品蜜桃在线看| 欧美一级做a爰片免费视频| 一区二区三区免费在线观看| 性少妇bbw张开| 国产精品亚洲综合一区在线观看| 国产淫片av片久久久久久| 欧美欧美全黄| 亚洲开发第一视频在线播放| 国产精品qvod| 91久久国产综合久久91精品网站| 天堂8中文在线最新版在线| 麻豆成人在线看| 国产中文在线视频| 亚洲国产精品久久| 99久久一区二区| 欧美撒尿777hd撒尿| 精品国产免费观看| 一区二区免费在线播放| 女教师淫辱の教室蜜臀av软件| 91麻豆国产自产在线观看| 动漫av在线免费观看| 极品销魂美女一区二区三区| 日韩免费高清在线| 免费在线亚洲欧美| 日本一级黄视频| 五月精品视频| 午夜精品视频在线观看一区二区| 日韩av三区| 国产精品加勒比| 亚洲一区二区三区日本久久九| 国产美女久久精品| 亚洲四虎影院| 26uuu亚洲国产精品| 麻豆网站在线| 日韩中文在线观看| 2021av在线| 在线观看欧美日韩| yes4444视频在线观看| 亚洲情综合五月天| 欧美亚洲日本| 亚洲人成网站免费播放| 青青草在线播放| 日韩精品免费在线视频观看| 特黄视频在线观看| 亚洲黄页网在线观看| 黄色福利在线观看| 精品国产一二三区| 日韩在线观看视频网站| 精品国产一区二区三区久久影院| 国产ts人妖调教重口男| 日韩一卡二卡三卡国产欧美| av综合在线观看| 日韩欧美综合一区| 精品人妻一区二区三区三区四区| 欧美一级一区二区| 性一交一乱一透一a级| 精品国精品国产| 天堂网在线资源| 日韩精品视频中文在线观看 | 波多野结衣欧美| 高清国产一区| 亚州国产精品| 日韩欧美精品一区二区| 成人午夜国产| 99热都是精品| 亚洲国产电影| aa免费在线观看| 奇米影视一区二区三区| 国产免费中文字幕| 福利电影一区二区三区| 污污内射在线观看一区二区少妇| 91麻豆文化传媒在线观看| a级在线免费观看| 亚洲三级电影网站| 国产精品99精品无码视| 欧美视频免费在线观看| 综合久久中文字幕| 日韩免费成人网| 日韩精品123| 久久精品视频免费播放| 国产高清在线a视频大全| 热99精品只有里视频精品| 精品国产黄a∨片高清在线| 91麻豆蜜桃| 中文字幕精品影院| 中文字幕一区二区三区最新| 在线看片成人| 美女黄色片视频| 国产毛片一区二区| 永久免费看mv网站入口78| 中文字幕一区在线观看视频| www.99re7.com| 欧美三级日韩在线| 亚洲精品无amm毛片| 亚洲人午夜色婷婷| 性欧美高清come| 国产精品久久久久久av福利软件 | 国产这里有精品| 黑人欧美xxxx| 国产高清免费在线观看| 亚洲欧美精品在线| 午夜dj在线观看高清视频完整版| 日本电影亚洲天堂| 亚洲综合影院| 亚洲图片欧洲图片日韩av| 亚洲激情精品| 超碰中文字幕在线观看| 久久久久久久久久久久久女国产乱 | 亚洲91精品在线观看| 伦一区二区三区中文字幕v亚洲| 国产亚洲欧美另类一区二区三区| 欧美韩国日本在线观看| 丝袜老师办公室里做好紧好爽| 国产精品一区不卡| 亚洲激情图片网| 日本丰满少妇一区二区三区| 亚洲精品.www| 久久综合色88| 91精品店在线| 欧美系列一区| 亚洲一区二区三区高清| 国模大尺度视频| 国产精品久久午夜夜伦鲁鲁| 日韩在线视频不卡| 亚洲国产一区自拍| 免费网站在线观看人| 成人午夜激情免费视频| 欧美先锋资源| 成人3d动漫一区二区三区| 成人动漫一区二区三区| 欧美成人免费观看视频| 91精品国产综合久久久蜜臀粉嫩| 岛国最新视频免费在线观看| 91大神福利视频在线| 国产厕拍一区| a天堂资源在线观看| 国产精品主播直播| 艳妇荡乳欲伦69影片| 欧美日韩视频一区二区| av影片在线看| 国产精品视频免费观看www| 久久av超碰| 天天碰免费视频| 国产精品久久久久一区二区三区| 亚洲av中文无码乱人伦在线视色| 精品视频—区二区三区免费| 女海盗2成人h版中文字幕| 九色91视频| 国产午夜久久| 中文字幕第4页| 91精品91久久久中77777| 国产三级视频在线| 国产精品久久一| 欧美激情电影| 手机在线播放av| 亚洲一区视频在线| 五月婷婷综合久久| 日韩美女在线观看| 精品一级毛片| 国产探花在线看| 一区二区三区在线视频观看| 成人1区2区3区| 97精品视频在线观看| 亚洲国产合集| 日日噜噜噜噜久久久精品毛片| 国产女人18毛片水真多成人如厕 | 成人国产一区二区三区| 国产宾馆实践打屁股91| 国产精品6666| 亚洲人成在线电影| 91精品在线免费视频| 妞干网在线播放| 久久美女高清视频| 一二三四区在线| 欧美精品福利视频| 你懂的一区二区三区| 一本色道久久亚洲综合精品蜜桃 | 欧美 丝袜 自拍 制服 另类| 久久久久久日产精品| 中文字幕码精品视频网站| 欧美成人午夜剧场免费观看| 九色丨蝌蚪丨成人| 欧美色图色综合| 国产精品进线69影院| www.国产欧美| 欧美在线视频在线播放完整版免费观看 | 狠狠色狠狠色综合日日91app| 久久久精品国产sm调教网站| 亚洲码在线观看| 99国内精品久久久久| 狠狠干 狠狠操| 国产精品久久看| 天天干,夜夜爽| 国产一区私人高清影院| 亚洲国产高清一区| 貂蝉被到爽流白浆在线观看| 欧美精品一区二区三区久久久| 午夜无码国产理论在线| 国产精品igao激情视频| 国产性天天综合网| 成人小说亚洲一区二区三区| 国产精品丝袜一区二区三区| 亚洲激情亚洲| 日本一级二级视频| 亚洲人成网站在线播|