likes
comments
collection
share

javascript中的数据类型

作者站长头像
站长
· 阅读数 74

javascript中的数据类型

前置知识

变量

  • 大多数的实用程序,都需要跟踪值的变化。因为程序在执行时,会对值进行各种操作,值会不断发生变化。在程序中最简单的实现这一点,就是将值赋值给一个符号容器,这个符号容器称之为变量。对于javascript来说,javascript变量是松散类型的,而变量不过就是特定时间点一个特定值的名称而已。由于没有规则定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命周期内可以改变。这样的变量很有意思,很强大。当然也会有不少问题

比如下面代码

var variable = 1;
variable = '3';
variable = null;
variable = [];
variable = undefined;
variable = {};
console.log('variable', variable); // {}

栈(stack)和堆(heap)

  • stack会自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小也不一定会自动释放

基本数据类型(原始值)和复杂数据类型(引用值)

  • 原始值类型 「值类型/基本数据类型」

    • number
    • string
    • boolean
    • null
    • undefined
    • symbol
    • bigint
  • 对象类型 「引用数据类型」

    • 普通标准对象 object
    • 标准特殊对象 Array, RegExp, Date, Math, Error...
    • 非标准特殊对象Number, String, Boolean...
    • 可调用/执行对象「函数」 function
  1. 基本数据类型是:存放在中的简单数据段,数据大小确定,内存空间大小可以分配, 它们是直接按值存放的,所以可以直接按值(by value)访问基本数据类型是原始值,
  2. 图示

javascript中的数据类型

  1. 引用数据类型是:存放在内存中的对象,每个空间大小不一样,要根据情况进行特定的配置。在js中,不可以直接访问堆内存空间中的位置和操作堆内存空间。只能操作对象在栈内存中的引用地址。所以复杂数据类型,是按引用(by reference)访问的。引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
  2. 图示

javascript中的数据类型

关于js中的数据类型,我想闲聊几句

数据

  • 数据一直都是程序的一个重要的存在。我们平时设置变量去接收值 let a = 1;去存储数据localStorage.setItem('k', 1)。或者console.log()都是去追踪数据的变化。在没有框架之前,我们一直都在致力于对数据的追踪,但是仅限于追踪数据。然而vue将视图和追踪数据的变化,完美融合,实现了MVVM。既然要追踪数据变化,结合上页面,真是一个伟大的创举!

类型

js中的类型是松散的,是动态类型的语言。正如开头所说变量不过就是特定时间点一个特定值的名称而已。由于没有规则定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命周期内可以改变。这也是很多人诟病js的一个点,所以出来了TS,来约束数据类型。然后在java这种静态类型语言中,对类型就显得非常呆板,说了是字符串,就不能改变其类型。所以出现了多态的转型,就是做数据类型的转化。而我们js与生俱来就实现了多态,还有什么理由嫌弃他的类型松散呢? 我们应该利用现有的js特性,去更好的编写代码,而不是去嫌弃他,或者抛弃他。

转载自:https://juejin.cn/post/7135037801011085320
评论
请登录