手机版

JavaScript中的原始值和复杂值

时间:2021-09-19 来源:互联网 编辑:宝哥软件园 浏览:

前面的话。

javascript的数据类型可以分为两种:原始类型和引用类型。原始类型也叫基本类型或简单类型,javascript基本数据类型包括Undefined、Null、Boolean、Number和String,引用类型也叫复杂类型,在Javascript中就是Object。相应地,它们的值也分别称为原值和复值。

特点

原始值。

简单来说:原始值是固定且简单的值,是存储在堆栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。

原始值是Javascript中可用的最低或最简单的数据或信息形式。基元类型的值被称为基元值,因为它们是不可分割的。也就是说,数字是数字,字符是字符,布尔值是真还是假,null和undefined是null和undefined。这些值本身很简单,不能表示由其他值组成的值。

原始类型有哪些?

有五种基本类型: undefined、null、boolean、number和string。

我们可以用类型来判断一个人是否属于某一类型。

运算符的类型

对变量或值使用typeof运算符将返回以下值之一:

注意:

1.返回值是字符串类型。

2.与原类型相比,它仍然是一个null,这是相当特殊的。使用了typeof(null)并返回“object”。我们将null理解为对象的占位符。

复值

复杂值可以由许多不同类型的javascript对象组成。内存中复杂对象的大小是未知的,因为复杂对象可以包含任何值,而不是特定的已知值。

存储模式

堆栈存储器

由于原值占用固定空间,是一个简单的数据段,为了提高变量的查询速度,将其存储在堆栈中。

堆存储

因为复值的大小会发生变化,所以不能存储在堆栈中,否则会减慢变量的查询速度,所以存储在堆中,变量中存储的值是指向存储对象的内存的指针。

存取方式

按值访问

原始值作为非粒度值存储和操作,引用它们将会传递它们的值。

var myString=' foovar myStringCopy=myStringvar myString=nullconsole.log(myString,MyStringCopy);//null,“foo”引用访问。

复杂值是通过引用而不是实际值来存储和操作的。创建包含复杂对象的变量时,其值是内存中的引用地址。引用复杂对象时,使用其名称(即变量或对象属性)通过内存中的引用地址获取对象的值。

var myObject={ };var copyOfMyObject=myObject//复制了引用myObject.foo='bar '而不是值;//操作myObject//中的值现在,如果输出myObject和copyOfMyObject,将输出foo属性,因为它们引用同一个对象console.log (myobject,copy of myObject);//对象{foo='bar'}比较方法。

原始值通过值进行比较,而复杂值通过引用进行比较。复数值只有在引用同一个对象时才相等(也就是说,它们有相同的地址)。即使包含同一对象的两个变量也不相等,因为它们不指向同一对象。

var price1=10var price2=10var price3=新数字(' 10 ');var price4=price3console . log(price 1==price 2);//true console . log(price 1==price 3);//false price 4=10;console . log(price 4==price 3);//true console . log(price 4===price 3);//false var objectFoo={ same : ' same ' };var ObjectBar={ same : ' same ' };console . log(object foo==object bar);//false var ObJect a={ foo : ' bar ' };var objectB=objectAconsole . log(ObJect a==ObJect b);//真正的动态属性。

对于复杂的值,您可以为它们添加属性和方法,也可以更改和删除它们。但是,属性和方法不能添加到简单的值中。

复杂值支持动态对象属性,因为我们可以定义一个对象,然后创建一个引用,然后更新该对象,所有指向该对象的变量都将被更新。一个新变量指向一个现有的复杂对象,该对象不会被复制。这就是为什么复杂的值有时被称为参考值。复杂值可以有任意多的引用,即使对象发生变化,它们也总是指向同一个对象。

var str=' teststr.property=trueconsole . log(str . property);//未定义的var ObJa={ property : ' value ' };var pointer1=objAvar pointer2=pointer1objA.property=nullconsole.log(objA.property,pointer1.property,pointer 2 . property);//null null null包装类型。

当原始值被用作构造函数创建的对象时,Javascript会将其转换为对象,这样就可以使用对象的属性和方法,然后对象属性将被丢弃并更改回原始值。

版权声明:JavaScript中的原始值和复杂值是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。