JavaScript的原始類型,javascript

來源:互聯網
上載者:User

JavaScript的原始類型,javascript
原始值與引用值


在ECMAScript 中,變數可以存放兩種類型的值,即原始值和引用值。

  • 原始值(primitive value)是存放在棧(stack)中的簡單資料欄位,也就是說,它們的值直接儲存在變數訪問的位置。
  • 引用值(reference value)是儲存在堆(heap)中的對象,也就是說,儲存在變數出的值是一個指標(point),指向儲存物件的記憶體處。


原始類型


    ECMAScript 中有5種原始類型,即UndefinedNullBooleanNumberString。ECMAScript把術語類型定義為一個集合,每種原始類型定義了它包含的值的範圍及其字面量表示形式。ECMAScript 提供了typeof 運算子來判斷一個值是否在某種範圍內。


typeof運算子


typeof 運算子有一個參數,即要檢查的變數或值。例如:

var sName = “zhangsan";alert(typeof sName); //output stringalert(typeof 88); //output number

對變數或值調用typeof運算子將返回下列值之一:

  •  "undefined",如果變數是Undefined型的
  •  "boolean",如果變數是Boolean型的
  •  "number",如果變數是Number型的。
  •  "string",如果變數是String型的。
  •  "object",如果變數是一種參考型別或Null類型的。


Undefined類型


Undefined 類型只有一個值,即undefined。

undefined值一般有三種情況:

  • 聲明的變數未初始化值
  • 未聲明的變數
  • 函數無明確返回值時


聲明的變數未初始化


當聲明的變數未初始化時,該變數的預設值為undefined。

var sName;alert(typeof sName);  alert(sName == undefined);

前面聲明的sName,沒有初始值。該變數將被賦予undefined,即Undefined類型的字面量。


未聲明的變數


當使用一個未聲明的變數時,變數的預設值為undefined。

var sName;alert(typeof sName); // output undefinedalert(typeof sAge); // output undefined

未聲明的變數,預設值會給undefined


函數無明確返回值時


當函數無明確返回值或無返回值時,返回的為undefined

function testFunction() {// no return}

例如

function testFunction() {return;}alert(testFunction == undefined); // output “true”

Null 類型


    Null類型的值只有一個null,即它的字面量。值undefined實際上由null派生而來,因此ECMAScript把它們定義為相等。

alert(null == undefined); // output true

    儘管這兩個值相等,但它們的含義不同。Undefined是聲明了變數但未對其初始化時賦予該變數的值,null則用於表示尚未存在的對象。如果函數或方法要返回的是對象,那麼找不到對象時,返回的通常是null。


Boolean類型


    Boolean 類型是ECMAScript 中最常用的類型之一。它有兩個值true 和false。在一些情況下,0 也可以被轉換為false。


Number 類型


    Number型的數字既可以表示32位的整數,也可以表示64位的浮點數。直接輸入的任何數字都被看作Number型的字面量。

var iNum = 123;

    整數可以被表示為八進位或十六進位的字面量。

    八進位字面量的首數字必須是0,其後的數字可以是任何八位元字(0到7)。

var iNum = 070;  // 070 is equals 56 in decimal

    要建立十六進位的字面量,首位位元必須是0,其後接字母x,然後是任意的十六進位數字(0-9A-F)。這些字母可以是大寫的,也可以是小寫。

var iNum1 = 0x1f; // 31var iNum2 = 0x2B; // 43

 

儘管所有整數都可表示為八進位或十六進位的字面量,但所有數學運算返回的都是十進位結果。


String 類型


    String 類型的獨特之處在於,它是唯一沒有固定大小的原始類型。可以用字串儲存0或更多的Unicode字元,由16位整數表示(Unicode是一種國際字元集)。

   

    字串中的每個字元都有特定的位置,首字元從位置0開始,第二個字元在位置1,依次類推。字串最後一個位置的位置是字串的長度減一。

 

hello

這個字串的長度為5

h 為第0個字元,e 為第1個字元,最後一個字元o為第4(即字串長度5 減去 1)個字元

 

字串字面量可以由雙引號(”)或單引號(’)聲明。

例如,下面的兩行都是有效聲明:

var sColor1 = "blue";var sColor2 = 'blue';



附上所有的代碼

<script>// typeof var sName = "zhangsan";alert(typeof sName); //output stringalert(typeof 88); //output number// undefinedvar sName;alert(typeof sName);   // output undefined    alert(sName == "undefined");  //output truealert(typeof sAge); // output undefinedfunction testFunction() {return;}alert(testFunction == undefined); // output true// nullalert(null == undefined); // output true// numbervar iNum = 070;  // 070 is equals 56 in decimalalert(iNum);var iNum1 = 0x1f;alert(iNum1);var iNum2 = 0x2B;alert(iNum2);// stringvar sColor1 = "blue";alert(sColor1);var sColor2 = 'blue';alert(sColor2);</script>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.