JavaScript引用类型和基本类型的详细说明
javascript中有两种数据类型:基本类型和引用类型。
基本类型只是一个简单的数据段。
引用类型是由多个值组成的对象。
当我们执行赋值操作时,解析器将首先分析数据是值类型还是引用类型。
两种访问方法:
基本类型值:按值访问,并对它们实际保存的值进行操作;
引用类型值:通过引用访问。查询时,我们需要先从栈中读取内存地址,然后找到存储在堆内存中的值。
这里有两种数据类型的javascript。
一、基本数据类型:
javascript中有六种基本的数据类型:string、number、boolean、symbol(es6中新增)、null和undefined。这五种基本数据类型可以直接操作变量中存储的实际值。
例子如下:
var a=10var b=a;b=20console . log(a);上面的代码是一个简单的赋值操作,下面简单介绍一下。
(1).首先,数字是基本的数据类型。(2).var b=a,其实这个赋值就是复制a的数据,然后赋给变量B.(3) A和B完全独立。(4).b=20,修改变量b的值不会影响变量a的值。
下图是:
栈存储器
二.参考类型数据:
在javascript中,引用类型数据存储在堆内存中,但是不能直接访问堆内存空间和操作堆内存空间中的位置。您只能在堆栈内存中操作对象的引用地址。因此,保存在堆栈内存中的实际上是堆内存中对象的引用地址。有了这个引用地址,您可以快速找到存储在堆内存中的对象。
示例:
var obj1=新对象();var obj2=obj1obj 2 . name=' we ';console . log(obj 1 . name);让我们做一点代码上面的代码。
(1).var obj1=new Object(),即创建一个对象,是一个引用类型的数据,变量obj1将对象的地址存储在堆内存中。(2).var obj2=obj1,这个赋值操作实际上是将堆内存中对象的存储地址复制到变量obj2,也就是说,两个变量都存储指向实际对象的内存地址,指向同一个对象。(3).obj2.name=' we ',给对象添加一个属性。(4).console.log(obj1.name),output' we,因为两个变量指向同一个对象。
下图是:
字符串是一种特殊的基本数据类型。
在许多语言中,字符串被表示为一个对象,但是在ECMAScript中没有遵循这个传统。字符串被认为是一种基本数据类型,但它是一种特殊的基本类型。
似乎String应该作为引用类型使用,但实际上不是,因为它不是对象。好像应该是基础数据类型,应该是以传值的方式操作。
请看下面的例子:
Var stra='这是一个字符串';var strb=straStra='这是另一个字符串';console . log(strb);//这是一个字符串。从上面的例子中我们可以看到,似乎stra通过价值转移的方式复制了一个副本到strb。当stra改变时,strb没有改变。似乎我们已经可以断定字符串是一种基本的数据类型。
但是由于String可以是任意长度,通过值传输逐个复制字节的显示效率还是很低的,所以似乎String也可以作为引用类型。
请看下面的例子:
var a=' myobjecta.name=' mynameconsole . log(a . name);//undefined表示字符串不能被视为对象。实际上,javascript中的string是不能改变的,javascript也没有提供任何改变String的方法和语法。
var a=' myobjecta=a.substring(3,5)console . log(a);//bj请记住,这样做不会改变String字符串“myobj”,只有一个引用了另一个字符串“bj”,并且“myobj”已被回收。
因此,可以说String实际上并不符合上述两种数据类型的分类。它是一种特殊类型,中间有两个属性。
版权声明:JavaScript引用类型和基本类型的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。