JavaScript的原始类型

原始值与引用值


在ECMAScript 中,变量可以存放两种类型的值,即原始值和引用值。

  • 原始值(primitive value)是存放在栈(stack)中的简单数据字段,也就是说,它们的值直接存储在变量访问的位置。
  • 引用值(reference value)是存储在堆(heap)中的对象,也就是说,存储在变量出的值是一个指针(point),指向存储对象的内存处。


原始类型


    ECMAScript 中有5种原始类型,即UndefinedNullBooleanNumberString。ECMAScript把术语类型定义为一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。ECMAScript 提供了typeof 运算符来判断一个值是否在某种范围内。


typeof运算符


typeof 运算符有一个参数,即要检查的变量或值。例如:

var sName = “zhangsan";

alert(typeof sName); //output string

alert(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 undefined

alert(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; // 31

var 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 string

alert(typeof 88); //output number

// undefined
var sName;

alert(typeof sName);   // output undefined  
  
alert(sName == "undefined");  //output true

alert(typeof sAge); // output undefined

function testFunction() {
	return;
}

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

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

// number
var iNum = 070;  // 070 is equals 56 in decimal
alert(iNum);

var iNum1 = 0x1f;
alert(iNum1);

var iNum2 = 0x2B;
alert(iNum2);

// string
var sColor1 = "blue";
alert(sColor1);

var sColor2 = 'blue';
alert(sColor2);
</script>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值