1. 什么叫动态类型

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

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

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

在这里插入图片描述 

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 关键字(数组与对象等),但即使这样也存在误差(目前没有百分百准备的方法,很遗憾)

在这里插入图片描述

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 数据类型与数据结构的资料请关注Devmax其它相关文章!

一文带你走进js数据类型与数据结构的世界的更多相关文章

  1. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  4. swift篇第一期:简单的数据结构

    首先我们可以去使用Playground来编码,并且会实时的显示对应的编码信息,这样我们就不用每次都去运行程序来显示输出的东西了哦,也方便了我们对某些语句的验证,这个是比较赞的var与let前者为可变修饰符,后者为不可变从字面意思我们就可以很好的区分了常用的类型呢,跟其他语言基本相同啦,主要有几种:1.int类型2.Float,Double类型3.String类型4.Boolean类型当我们去声明一

  5. Swift 集合数据结构性能分析

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. Swift中的集合类数据结构

    在那种情况下,你将会需要一种基本的集合类数据结构。继续学习,你将会比较成熟的Cocoa数据结构与对应的纯Swift结构的性能。常见iOS数据结构iOS中三种最常用的数据结构是arrays,dictionaries和sets。除了在Swift和Objective-C中旧的Foundation框架中的数据结构,现在又有了新的仅支持Swift版本的数据结构与语言紧密结合在一起。Swift数组是同质的,意味着每一个Swift数组都只包含一种类型的对象。

  7. 11.Swift 中的类和结构体

    举例来说,以下情境中适合使用结构体:1.几何形状的大小,封装一个width属性和height属性,两者均为Double类型。这次就讲到这里,下次我们继续

  8. a place you can learn algorithms and data structures(算法和数据结构) in swift

    https://github.com/raywenderlich/swift-algorithm-club

  9. Swift3.0 类和结构体的选择

    结构体实例总是通过值传递,类实例总是通过引用传递先说说值类型和引用类型的区别值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝在Swift中,所有的结构体和枚举类型都是值类型。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体”Swift中,许多基本类型,诸如String,Array和Dictionary类型均以结构体的形式实现。Objective-C中Nsstring,NSArray和NSDictionary类型均以类的形式实现,而并非结构体。

  10. Swift与Js通过WebView交互

    开发环境:Swfit2.3XCode8.2基础概念jscontext,jscontext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码JSValue,JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等JSExport,JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用Swif

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部