JavaScript的原始类型

原始值与引用值

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

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

原始类型

ECMAScript 中有5种原始类型,即UndefinedNullBooleanNumber
String。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>
时间: 2024-11-05 13:48:08

JavaScript的原始类型的相关文章

javascript的原始类型和引用类型

原始类型存在堆中,引用类型存在栈中,引用类型存的是指向对象内存的指针. 原始类型有5个:Undefined.Null.String.Boolean.Number. javascript提供了typeof方法来判断值类型,原始类型对应的结果是undefined.object.string.boolean.number(typeof null 结果是object,这本是个历史错误但沿用成习惯),引用类型的结果皆为object. 引用类型通常理解成类,Object可以说是所有类的基类.javascri

包装对象——JavaScript中原始类型拥有属性的原因

我们先看段代码: var s = "Test"; var len=s.length; 我们知道在JavaScript中像上面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有length的属性呢? 原因是在JavaScript中只要引用了字符串(数字.布尔值也是一样的)的属性,JS就会将字符串通过调用new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用.一旦属性引用结束,这个新创建的对象就会销毁(真实实现并不一定是这样,但整个过程看起

由浅入深JavaScript——变量和原始类型

JavaScript变量 JavaScript变量标识符标识符 var + 变量名称来定义变量.变量名称以字母,下划线_,美元$符号开头,余下字符可以是字母,数字,下划线,美元符号.eg: var  name = 'hello';     var  a1 = 'hello';    var  _test = 'hello';    var  $test = 'hello';    以上变量名称均为正确.    var  1a = 'hello'; //数字开头错误.    JavaScript允

[Effective JavaScript 笔记] 第4条:原始类型优于封闭对象

js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //"number" typeof "s";//"string" typeof null;//"object":ECMAScript把null描述为独特的类型,但返回值却是对象类型,有点困惑. 可以使用Object.prototype.t

01.JavaScript 面向对象精要--原始类型和引用类型

一.什么是类型 JavaScript 虽然没有类的概念.但依然存在两种类型:原始类型和应用类型. 原始类型保存为简单的数据值,引用类型则保存为对象,其本质是指向内存位置 的引用.也就是说:原始值被直接保存在对象内,而引用值则作为一个指针保存在 对象内,该指针指向实际对象在内存中的储存位置. 二.原始类型 2.1 JavaScript中5中原始类型:boolean,number,string,null,undefined  原始类型变量直接保存原始值(而不是一个指针),当你将原始值赋值给一个变量 

JavaScript中对象类型的转换小结

对象到字符串和对象到数字类型的转换涉及到两个重要的方法,最终的转换结果会受到这两个方法返回结果的影响,这两个方法就是toString和valueOf.所有的对象都会从Object对象中继承到这两个方法.toString方法 用于返回对象的字符串表示(但是其实也可以不返回字符串).对于默认从Object继承而来的toString方法并不会返回太多有意义的内容.而valueOf方法目的是返回一个可以表示对象的原始类型值,但是由于对象的复杂性,大多数情况下根本不可能用一个原始类型值来表示,所以默认的v

javascript 判断对象类型

typeof typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果. 此表总结了typeof所有可能的返回值: 操作数类型 返回值 undefined "undefined" Null "object" Boolean "boolean" Number "number" String "string" 函数对象 "function" E4X XM

由js apply与call方法想到的js数据类型(原始类型和引用类型)

原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 obj.call(null, 1,2,3,4); 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: var max=Mat

javascript 的原始数据类型

javascript 的原始数据类型有五种,分别是Number.String.Boolean.null.undefined 原始类型数据的特点:值保存在变量本地,且赋值给其他变量后,其它变量改变不影响原来的值. 一.Number类型: 专门保存数字的类型,可用于进行数学计算等的数值. 所占空间:64位(8个字节)二进制保存.注:一个字节8个位. 强调:数字所占的空间与数值的大小没有关系,均占8个字节. 在Number类型中,经常会因为舍入误差引起错误; 舍入误差:因为计算机中无法精确表是十分之一