JS中基本类型与引用类型。

大家好,我是IT修真院西安分院第02期学员,一枚正直善良的web程序员。

1.背景介绍

ECMAScript:由ECMA-262制定的标准,用于实现通用的脚本语言。ECMAScript提供了脚本语言需要遵守的规则、细节和规范。
JavaScript:通用脚本编程语言,它遵循了ECMAScript标准。

换句话说,JavaScript是ECMAScript的方言。 通过阅读ECMAScript标准,你可以学会怎样实现一个脚本语言;而通过阅读JavaScript文档,你可以学会怎样使用脚本语言编程。


基本类型介绍
基本类型值指的是简单的数据段,ECMAScript中有5种简单数据类型(也成为基本数据类型):Undefined、Null、Boolean、Number、String。

引用类型介绍
在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但着称呼并不妥当。引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。

ECMAScript 还提供了 3 个特殊的引用类型:Boolean、Number 和String。

在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但着称呼并不妥当。引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。
ECMAScript 还提供了 3 个特殊的引用类型:Boolean、Number 和String
javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用, 所以引用类型的值是按引用访问的。 准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针, 也可以说是该对象在堆内存的地址。 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。
既然undefined和null的含义与用法都差不多,为什么要同时设置两个这样的值,这不是无端增加JavaScript的复杂度,令初学者困扰吗?Google公司开发的JavaScript语言的替代品Dart语言,就明确规定只有null,没有undefined!
这与JavaScript的历史有关。1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示"无"的值。 根据C语言的传统,null被设计成可以自动转为0。

2.知识剖析

基本类型

ECMAScript基本数据类型:Undefined、Null、Boolean、Number、String。

UNDEFINED
Undefined:只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。这个值表示变量不含有值,可以通过将变量的值设置为 null 来清空变量。

NULL

Null:第二个只有一个值的数据类型,null值表示一个空对象指针,所以使用typeof操作符检测null值会返回"object"。

BOOLEAN

Boolean:该类型只有两个字面值:true和false。但这两个值与数字值不是一回事,true不一定等于1,false也不一定等于0。

NUMBER
Number:该类型使用IEEE754格式来表示整数和浮点数值。
特殊数值:NaN,表示一个本来要返回数值的操作数未返回数值的情况。
1.任何涉及NaN的操作都会返回NaN。

2.NaN与任何值都不相等,包括本身。

STRING
String:用于表示由零或者多个16位Unicode字符组成的字符序列,即字符串。字符串由双引号(" ")或单引号(' ')表示。


引用类型
ECMAScript引用类型:Object类型,Array类型,Date类型,RegExp类型,function类型。还有基本包装类型,也是一种引用类型:Boolean、Number、String。
Object类型:对创建对象的函数的引用。
Array类型:数组的处理。
Date类型:处理日期的。
RegExp类型:正则表达式的相关操作。
function类型:函数类型在JavaScript中也是对象。
Boolean:和布尔值对应的引用类型。可以创建boolean对象
Number:和基本数据类型的数值对应的引用类型。可以创建对象和调用本身的方法。
String:字符串对象的引用类型。

3.常见问题

基本类型和引用类型有什么区别?

4.解决方案

1.声明变量时不同的内存分配
2.不同的内存分配机制也带来了不同的访问机制
3.复制变量时的不同

4.参数传递的不同

5.参考文献

参考一:JavaScript高级程序设计
参考二:JavaScript数据类型

参考三:ECMAScript引用类型

6.提问

1.基本类型保存在那里,引用类型保存在哪里有什么不同。

基本类型与引用类型都保存在栈内,一个存的是变量标识符和值,一个是变量标识符和指针。

2.什么是基本包装类型。

基本包装类型有布尔值,数值,字符串,他们同时具有基本类型的表达方式,也有属性与方法。

3.什么是变量标识符。

变量标识符就是,声明变量时,这个变量的名字为变量标识符。

猜你喜欢

转载自blog.csdn.net/qq_41778967/article/details/80366249