javascript中的原始值和复杂值

前面的话

javascript的数据类型可以分为两种:原始类型(基本类型或者简单类型)和引用类型。

原始类型:Undefined,Null,Boolean,Number,String五种;

引用类型:Object,Array,Function;

与此相对应的,它们的值分别被称为原始值和复杂值。

特性

原始值

原始值是表示javascript中可用的数据或信息的最底层的形式或者最简单的形式。原始类型的值被称为原始值,因为它们的值是不可被细化的。也就是说,数字是数字,字符串是字符串,布尔值是true和false,Undefined和Null是undefined和null。这些值很简单,不能表示由其他值组成的值。

原始值明显的特征是不可更改,任何方法无法改变一个原始值。

var s = "hello";
s.toUpperCase();
console.log(s);      //"hello"

复杂值

复杂值可以有很多种不同类型的javascript对想组成,复杂对象可以包含任何值,而不是一个特定的已知值。

对象和原始值不同,它们是可变的,它们的值是可以修改的。

var 0 = {x:1};
o.x = 2;
o.y = 3;
console.log(o.x);  // 2;
console.log(o.y);  // 3;

存储方式

栈存储

因为原始值占据空间固定,是简单的数据段,为了便于提升变量的查询速度,将其存储在栈(stack)中。

堆存储

由于复杂值的大小会发生改变,所以不能将其存放于栈中,否则会降低变量的查询速度,因此存放在堆(hack)中,存储在变量处的值是一个指针,指向存储对象的内存处。

时间: 2024-08-05 07:07:02

javascript中的原始值和复杂值的相关文章

javascript中几种为false的值

如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 NaN ""或''(空字符串) 需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true. <!DOCTYPE html> <html lang="en"> <head> <meta charset="

论javascript中的原始值和对象

javascript将数据类型分为两类:原始值(undefined.null.布尔值.数字和字符串),对象(对象.函数和数组) 论点:原始值不可以改变,对象可以改变:对象为引用类型: '原始值不可以改变'不可以改变,如果动脑筋的同学肯定会怀疑了,你们字符串可以改变啊,不信你瞅下面的 var a = 'aa'; alert(a.toUpperCase());//弹出 AA 其实,这些只是表面现象,原始值字符串'a'其实并未发生改变,只是拷贝了一份然后对新的拷贝使用'toUpperCase'函数而已

Javascript中构造函数的返回值问题和new对象的过程

首先明确一点:javascript中构造函数是不需要有返回值的,这一点跟java很类似.可以认为构造函数和普通函数的最大差别就是:构造函数中没有return语句,普通函数可以有return语句:构造函数中会使用this关键字定义成员变量和成员方法,普通的函数不会使用this关键字定义成员变量和方法. function Person(name,sex) { this.name = name; this.sex = sex; // return 1; //return true; //return

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

JavaScript中的Objects

JavaScript中的Objects 在JavaScript中,创建Objects有两种方式,declarative (literal) form和 constructed form. 首先,声明式如下: var myObj = { key: value // ... }; 构造式如下: var myObj = new Object(); myObj.key = value; 声明式与构造式创建的对象完全相同,只不过构造式的需要一个个地添加添加属性,一般情况下我们都是采用声明式的创建对象. J

javascript中的基本数据类型

在javascipt中有五大基本数据类型,列表如下: 1.数字 他们又又包括(正负整数,浮点数)十进制数,十六进制数与八进制数,指数和特殊数值NaN,(Infinity,-Infinity)正负无穷 2.字符串 所有包在引号内的字符 3.布尔值 true or false 4.undefined undefined类型的值只有一个:undefined >>>>>>>>>>>>未定义或函数没有现式返回值的时候都会出现 5.null nu

JavaScript 中对变量和函数声明的“提前(hoist)”的那些事儿

变量声明“被提前” JavaScript 的语法和 C .Java.C# 类似,统称为 C 类语法.有过 C 或 Java 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或函数,在编译阶段就会报错.然而,JavaScript 却能够在变量和函数被声明之前使用它们.下面我们就深入了解一下其中的玄机. 先来看一段代码: (function() { //ReferenceError: noSuchVariable is not defined console.log(noS

JavaScript中charAt函数

JavaScript中charAt函数的作用是返回指定索引位置处的字符. 使用方法: strObj.charAt(index) 其中 strObj是必选项.任意 String 对象或文字. index是必选项.想得到的字符的基于零的索引.有效值是 0 与字符串长度减 1 之间的值. JavaScript中charAt函数返回一个字符值,该字符位于指定索引位置.字符串中的第一个字符的索引为 0,第二个的索引为 1,等等.超出有效范围的索引值返回空字符串. 下面的示例说明了 charAt 方法的用法

(转)JavaScript 中对变量和函数声明的“提前(hoist)”

变量声明“被提前” JavaScript 的语法和 C .Java.C# 类似,统称为 C 类语法.有过 C 或 Java 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或函数,在编译阶段就会报错.然而,JavaScript 却能够在变量和函数被声明之前使用它们.下面我们就深入了解一下其中的玄机. 先来看一段代码: (function() { //ReferenceError: noSuchVariable is not defined console.log(noS