我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript基本数据类型和引用数据类型是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript基本数据类型和引用数据类型是什么

本篇内容主要讲解“JavaScript基本数据类型和引用数据类型是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript基本数据类型和引用数据类型是什么”吧!

ECMAScript包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是简单的数据段,而引用类型值那些可能有多个值构成的对象。

在进行变量赋值时,解析器必须确定这个值是基本类型值还是引用类型值。常用的5中基本数据类型为:Undefined、Null、Boolean、Number和String。基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。而引用类型的值是保存在内存中的对象。JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此,引用类型的值是按引用访问的。

1. 动态的属性

对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。例如:

var person = new Object();  person.name = "John";  alert(person.name); //"John"

只要对象不被销毁或者这个属性不被删除,这个属性就一直存在。但我们不能给基本类型的值添加属性,尽管并不会导致任何错误。

2. 复制变量值

如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后将该值复制到为新变量分配的位置上,例如:

var num1 = 5;  var num2 = num1; //5

下图形象地展示了复制基本类型值的过程:

JavaScript基本数据类型和引用数据类型是什么

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

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

JavaScript基本数据类型和引用数据类型是什么

3. 传递参数

ECMAScript中所有函数的参数都是按值传递的。把函数外部的值复制给函数内部的参数,就和把一个变量的值复制给另一个变量一样。无论传递的是基本类型的值还是引用类型的值。这里需要注意,访问变量有按值和按引用两种方式,但参数只能按值传递。

在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数)。例如:

function addTen(num){  num += 10;  return num;  }  var count = 20;  var result = addTen(count);  alert(count); //20,没有变化  alert(result); //30

参数实际上是函数的局部变量。参数num和变量count互不认识,它们只是具有相同的值。假如num是按引用传递的,那么count的值也会变成30,从而反应函数内部的变化。

在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反应在函数外部。例如:

function setName(obj){  obj.name = "John";  }  var person = new Object();  setName(person);  alert(person.name); //"John"

在这个函数内部,obj和person引用的是同一个对象。换句话说,即使这个值是按值传递的,obj也会按引用来访问同一个对象。于是,在函数内容为obj添加nama属性在函数外的person对象也有所反应,因为person指向的对象在堆内存中只有一个,而且是全局对象。有许多开发者认为,在函数内容修改的对象会在全局作用域中反应出来,说明参数是按引用传递的,这个观点其实是错误的,看下面的代码:

function setName(obj){  obj.name = "John";  obj = new Object();  obj.name = "Evan";  }  var person = new Object();  setName(person);  alert(person.name); //"John"

如果person是按引用传递的,那么person就会自动被修改为指向其name属性为"Evan"的新对象,但我们访问person.name时发现其值仍然为"John",这说明即使在函数内部修改了参数的值,但原始的引用仍然保持不变。实际上,在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象在函数执行完成之后会立即销毁。

4. 检测类型

要检测一个值是不是基本数据类型,typeof操作符是***工具。它可以检测一个变量是字符串、数值、布尔值还是undefined。如果一个变量是对象或null,则typeof操作符会返回object。

但是在检测引用类型的值时,typeof用处就不那么大了,通常我们并不想知道某个值是对象,而想知道它是什么类型的对象,此时可以使用instanceof操作符,如果变量是给定引用类型的实例,那么instanceof操作符就会返回true。例如:

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

所有引用类型的值都是Object的实例。因此,在检测一个引用类型的值或Object构造函数时,instanceof都会返回true。当用instanceof操作符检测一个基本类型的值时,都会返回false,因为基本类型不是对象。

到此,相信大家对“JavaScript基本数据类型和引用数据类型是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript基本数据类型和引用数据类型是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript基本数据类型有什么

本篇内容介绍了“JavaScript基本数据类型有什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、HTML:HTML超文本标记语言
2023-06-02

Kotlin基本数据类型是什么

Kotlin基本数据类型是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。fun main() { // 整数型 val a: Byte = 1
2023-06-22

基本数据类型

Python支持多种数据类型在计算机内部,可把任何数据都看成一个对象,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来 整数  Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写
2023-01-31

java中基本数据类型是什么

小编给大家分享一下java中基本数据类型是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、整型byte 、short 、int 、longbyte 的取值范围:-128~127(-2的7次方到2的7次方-1)shor
2023-06-15

关于java中基本数据类型与引用数据类型的介绍

一、基本数据类型byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0int:整型,用于存储整数,在内存中占32位
关于java中基本数据类型与引用数据类型的介绍
2015-04-05

javascript什么数据类型

Javascript是一种动态类型语言,因此它的数据类型非常灵活。在Javascript中,数据类型可以是基本类型或对象类型,本文将介绍Javascript中各种数据类型。一、基本数据类型1. 字符串(String)字符串是Javascript中最常见的类型之一。它表示文本值,用单引号或双引号括起来。字符串可以包含任何字符,包括空格和特殊字符。例如:```var str1 =
2023-05-20

Python基本数据类型有什么

这篇文章主要讲解了“Python基本数据类型有什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python基本数据类型有什么”吧!  1.数值  int  flaot  2.字符串Stri
2023-06-02

Python基本数据类型

Numbers (数字)1、数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。2、Python支持四种不同的数字类型:int(有符号整型)long(长整型[也可以代表八进制和十六进制])floa
2023-01-31

java基本数据类型

java基本数据类型有:1、byte,用于处理文件和网络传输等字节级别的数据;2、short,可以用于节约内存空间的需求;3、int,使用最广泛的整数类型;4、long,用于处理需要较大值的整数计算;5、float,用于科学计算和需要高精度
2023-08-02

C语言基本数据类型是什么

这篇文章主要讲解了“C语言基本数据类型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言基本数据类型是什么”吧!1.C 语言包含的数据类型如下图所示:2.C语言的基本数据类型shor
2023-06-22

基本数据类型(二)

列表是 Python 最常用的数据类型,它是有序元素的集合,元素之间以逗号分隔,用中括号括起来,可以是任何数据类型。同时它也是一种序列,支持索引、切片、加、乘和成员检查等。数组:数据类型必须一致,有序的元素序列。列表:Python 中没有数
2023-01-31

Python3基本数据类型

Python3的基本数据类型变量不需要提前声明每个变量使用前必须赋值,赋值之后能会被建立Python中,变量是没有类型的,这里所说的“类型”是指内存中所存储的对像的类型。Python中有六种标准数据类型Number (数字)String (
2023-01-31

Python3 基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是一个
2023-01-30

编程热搜

目录