Web基本筆記~11.函式和記憶體問題
上一期
函式
函式對任何語言來說都是一個核心的概念,通過函式可以封裝任意多條陳述句,而且可以在任何地方、任何時候呼叫執行,JavaScript中的函式使用function關鍵字來宣告,后跟一組引數以及函式體,
理解函式最簡單的辦法就是拿數學里的函式作為例子,就比如y = f(x * 2)這個函式,當x的值為3的時候,y就是6, x 為 5的時候 y就是10,
JavaScript函式案例
function f (x){
return x * 2;
}
var y = f(3);
console.log(y); //6
這段代碼的含義就相當于數學里面的 y = f(x * 2)這個函式,
return 可以把值給回傳,f (x)里面的x是引數,可有可無,也可以有多個,return 也是可有可無,
onclick事件
在JavaScript里面有一種機制叫做事件機制,這個會在后面經常用到,今天提前學習其中的onclick事件,
在HTML的按鈕標簽加上onclick事件之后,就會觸發函式,
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
function retu(){
alert("回傳");
}
function del(){
confirm("您是否要洗掉?");
}
function repla(){
prompt("請輸入新密碼!");
}
</script>
</head>
<body>
<button onclick="retu()">回傳</button>
<button onclick="del()">洗掉</button>
<button onclick="repla()">修改密碼</button>
</body>
</html>
垃圾收集
JavaScript具有自動垃圾收集機制,也就是說執行環境會負責管理代碼執行程序中使用的記憶體,而在C和C++之類的語言中,開發人員的基本任務就是手工跟蹤記憶體的使用情況,這樣很容易造成許多問題,這個垃圾收集器的作業原理也很簡單,其實就是找到那些不用的變數,然后釋放掉它的記憶體,不需要像C++一樣還要去delete,
當我們在一個函式中定義了一個區域變數,那么這個區域變數會在該函式執行的程序中存在,而這個程序中會為該區域變數在堆疊(或者堆)的記憶體上分配相應的空間以便存盤他們的值,直到函式要執行結束了,這個時候區域變數就沒有存在的必要,然后就會釋放他們供記憶體使用,
標記清除
JavaScript中最常見的垃圾清理方式是標記清除,當變數進入環境的時候會將這個變數標記為進入環境,當變數要離開的時候會被標記成離開環境,垃圾收集器會在運行的時候給存盤在記憶體中的所有變數都加上標記,然后它會去掉環境中的變數以及被環境中的變數參考的變數標記,而在此之后再被加上標記的變數就會被視為準備洗掉的變數,原因是環境中的變數已經無法訪問這些變數了,最后垃圾收集器完成記憶體清除的作業,銷毀那些帶標記的值并識訓他們所占用的記憶體空間,
管理記憶體
雖然JavaScript已經具有了垃圾收集機制,但是在記憶體管理和垃圾收集面臨的問題還是有點與眾不同,最常見的問題就是分配給Web瀏覽器的可用記憶體數量通常要比分給桌面的要少,這樣做的目的主要是為了防止運行JavaScript的網頁耗盡全部系統記憶體而導致系統崩潰,記憶體限制問題不僅會影響給變數分配記憶體,同時還會影響呼叫堆疊以及在一個執行緒中能夠同時執行的陳述句數量,所以說我們要確保占用最少的記憶體給瀏覽器最好的性能,
如果說一個資料已經不再有用了,則可以把他置為Null來釋放這個參考,通常稱之為解除參考,
function fun(name){
var obj = new Object();
obj.name = name;
return obj;
}
var local = fun("hello world");
alert(local);
//手工解除參考
local = null;
不過,這種做法并不意味著自動回收該值所占用的記憶體,解除參考的真正作用是讓值脫離執行環境,方便垃圾收集器下次執行的時候將其回收,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/249087.html
標籤:其他
