欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一文带你走进js数据类型与数据结构的世界

程序员文章站 2022-03-22 17:11:39
目录1. 什么叫动态类型2. 数据类型2.1 原始类型(6 种原始类型,使用 typeof 运算符检查)2.2 null 与 object2.3 typeof 操作符重点说明3. 原始值3.1 原始值...

1. 什么叫动态类型

  • javascript 是一种弱类型或者说动态语言。
  • 我们不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
  • 这也意味着你可以使用同一个变量保存不同类型的数据
let a;     // 初始不给任何类型
a = 11;    // a此时是number类型
a = "二大爷"; // a 变成了字符串类型
a = true;  // a 变成了布尔类型

实际应用过程中并不推荐这样做,容易出现一些不可预知的错误

  • 比如你兄弟忽然变成了女的,又很漂亮(睡还是不睡?)
  • 比如你闺蜜忽然变成了男的,很帅(上还是不上?)
  • 比如隔壁老王变成了你老婆…(老王自己变成绿帽?)
  • 综上所述,数据类型一旦被确定,不要轻易篡改~~

一文带你走进js数据类型与数据结构的世界 

2. 数据类型

  • 你可能仍然以为javascript只有 6 种数据类型(这就是固有认知)
  • 最新的 ecmascript 标准定义了 8 种数据类型:

2.1 原始类型(6 种原始类型,使用 typeof 运算符检查)

  • undefined:typeof instance === “undefined”
  • boolean:typeof instance === “boolean”
  • number:typeof instance === “number”
  • string:typeof instance === "string"
  • bigint:typeof instance === “bigint”(任意大的整数
  • symbol :typeof instance === “symbol”

2.2 null 与 object

  • null: typeof instance === “object”
  • typeof instance === “object”。
  • 任何 constructed 对象实例的特殊非数据结构类型,也用做数据结构:(new object,new array,new map,new set,new weakmap,new weakset,new date),和几乎所有通过 new 关键字创建的东西。

2.3 typeof 操作符重点说明

  • typeof 操作符的唯一目的就是检查数据类型。
  • 如果我们希望检查任何从 object 派生出来的结构类型,使用 typeof 是不起作用的,因为总是会得到 “object”。
  • 检查 object 种类的合适方式是使用 instanceof 关键字(数组与对象等),但即使这样也存在误差(目前没有百分百准备的方法,很遗憾)

一文带你走进js数据类型与数据结构的世界

3. 原始值

3.1 原始值基本概念

  • 除 object 以外的所有类型都是不可变的(值本身无法被改变)。
  • 例如,与 c 语言不同,javascript 中字符串是不可变的(javascript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变),我们称这些类型的值为“原始值”。

3.2 各类型说明

  • 布尔类型:一个逻辑实体,可以有两个值:true 和 false
  • null类型:只有一个值: null,就是啥也没有
  • undefined类型:一个没有被赋值的变量会有个默认值 undefined
  • number类型:没有像java一样进一步细分类型,整数和浮点数都可以。还有一些带符号的值:+infinity,-infinity 和 nan (非数值,not-a-number)
  • bigint 类型:javascript 中的一个基础的数值类型,可以用任意精度表示整数。可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。bigint是通过在整数末尾附加 n 或调用构造函数来创建的。

语法:bigint(value);

value: 创建对象的数值。可以是字符串或者整数

bigint() 不是构造函数,因此不能使用 new 操作符

  • string类型:字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。

获取一个字符串的子串可通过选择个别字母或者使用 string.substr().

两个字符串的连接使用连接操作符 (+) 或者 string.concat().

  • symbols类型:唯一的并且是不可修改的, 并且也可以用来作为object的key的值
  • object类型:对象可以被看作是一组属性的集合,用对象字面量语法来定义一个对象时,会自动初始化一组属性。

属性的值可以是任意类型,包括具有复杂数据结构的对象。属性使用键来标识,它的键值可以是一个字符串或者符号值(symbol)

以上就是一文带你走进js-数据类型与数据结构的世界的详细内容,更多关于js 数据类型与数据结构的资料请关注其它相关文章!