变量的两种不同类型

Posted leeeoooonhuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量的两种不同类型相关的知识,希望对你有一定的参考价值。

变量可能包含两种不同数据类型的值:基本类型值引用类型值

基本类型值指的是
简单的数据段,而引用类型值指那些可能由多个值构成的对象

在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。 5 种
基本数据类型: Undefined 、 Null 、 Boolean 、 Number 和 String 。这 5 种基本数据类型是按值访问
的,因为可以操作保存在变量中的实际的值。

引用类型的值是保存在内存中的对象。与其他语言不同,javascript 不允许直接访问内存中的位置,
也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。
为此,引用类型的值是按引用访问的。

var num1 = 5;
var num2 = num1;

技术图片此, num1 中保存的值是 5。当使用 num1 的值来初始化 num2 时, num2 中也保存了值 5。但 num2
中的 5 与 num1 中的 5 是完全独立的,该值只是 num1 中 5 的一个副本。此后,这两个变量可以参与任
何操作而不会相互影响。

 

当从一个变量向另一个变量复制引用类型的值时,同样也会将存储在变量对象中的值复制一份放到
为新变量分配的空间中。不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一
个对象。复制操作结束后,两个变量实际上将引用同一个对象。因此,改变其中一个变量,就会影响另
一个变量。

var obj1 = new Object();
var obj2 = obj1;
obj1.name = "Nicholas";
alert(obj2.name); //"Nicholas"

技术图片首先,变量 obj1 保存了一个对象的新实例。然后,这个值被复制到了 obj2 中;换句话说, obj1
和 obj2 都指向同一个对象。这样,当为 obj1 添加 name 属性后,可以通过 obj2 来访问这个属性,
因为这两个变量引用的都是同一个对象。

 

检验类型:instanceof(检测是基本数据类型或者是引用数据类型)

区别typeof:typeof检测object以及null都会返回Object;

 

instanceof用法:

alert(person instanceof Object); // 变量 person 是 Object 吗? true
var zz = null;
console.log(zz instanceof Object)//false

alert(colors instanceof Array); // 变量 colors 是 Array 吗? alert(pattern instanceof RegExp); // 变量 pattern 是 RegExp 吗?

返回布尔值

根据规定,所有引用类型的值都是 Object 的实例。因此,在检测一个引用类型值和 Object 构造
函数时, instanceof 操作符始终会返回 true 。

 

以上是关于变量的两种不同类型的主要内容,如果未能解决你的问题,请参考以下文章

SSM框架MyBatis笔记 --- 动态sql讲义+实战;map在动态sql中的使用;列名与类中成员变量名不同的两种解决方案

Gradle 设置以处理具有相同代码库但依赖项不同的两种部署类型

Python判断变量的数据类型的两种方法

更好地允许“id”的对象类型或为方法的两种不同类型提供两个参数?

如何使用python在mongodb的两种不同类型的字段或索引或标题中搜索值?

maven警告:使用同一工件的两种不同类型的依赖项时重复版本