js null,undefined,字串小結

來源:互聯網
上載者:User

複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>null,undefined,字串的記憶體佔有情況隨談</title>
<style type="text/css">
body{font-size:12px;}
pre{padding:5px;border:solid 2px #dfdfdf;color:#fff; background-color:#666;}
</style>
</head>
<body>
<pre>
<strong>總結:</strong>
//還一個要注意的就是null雖然是Object型 但是它非常特殊,本身存放在stack棧中。你可以理解成它是Object的一種特殊形式。
//還有就是在其他物件導向的語言中一般情況下字串都是存放在heap堆中,但在js中這個存放在棧stack中
//到這以後 突然想到一個問題 聲明和定義的區別,想了想 感覺本身是一個東西,兩種說法而已。此時,我突然想當聲明一個變數時,
//它是否在棧中呢 既是是否佔用記憶體,(當然所有的代碼會存在程式碼片段,但用記憶體,可我說的不是這),我是指未定義的變數是否在棧中存在
//想了一會 我認為存在,原因就是undefined類型只有一個值undefined,當聲明的變數未初始化時,當然預設值是undefined的字面量。
//講一講null,其實它本來應該存在堆中 但是js堆ECMAscript實現錯了,然後現在也被標準接受 成為一個Object的預留位置
</pre>
<script language="javascript" type="text/javascript">
alert(NaN == NaN);//false
alert(undefined === undefined);//true
alert(undefined == null);//true,原因是undefined時從null派生過來的。
alert(typeof null);
alert(undefined === null); //false
//通過上面的例子,可以寫個判斷是否為undefined的函數如下
var isUndefined = function (param) {
return param === undefined;
};
//還一個要注意的就是null雖然是Object型 但是它非常特殊,本身存放在stack棧中。你可以理解成它是Object的一種特殊形式。
//還有就是在其他物件導向的語言中一般情況下字串都是存放在heap堆中,但在js中這個存放在棧stack中
</script>
</body>
</html>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.