资讯专栏INFORMATION COLUMN

JS数据类型

ingood / 1988人阅读

摘要:它并没有为整数给出一种特定的类型。例如,使用一个分隔符,一个可以模仿一个列表一个的数组可能更适合一些。不幸的是,当一个分隔符在用于列表中的元素时,打乱了这个列表。

JS常用数据类型

编程语言都具有内建的数据结构,但各种编程语言的数据结构常有不同之处。本文试图列出 JavaScript 语言中内建的数据结构及其属性,它们可以用来构建其他的数据结构;同时尽可能的描述与其他语言的不同之处。

1.动态类型

JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。这也意味着你可以使用同一个变量保存不同类型的数据:

var foo = 42;    // foo is a Number now
foo = "bar"; // foo is a String now
foo = true;  // foo is a Boolean now

动态类型语言特点是灵活,缺点是牺牲了部分性能。对于动态类型语言,变量类型是可以动态改变的,无法在编译期确定,因此编译期的类型检查比较弱,这将导致很多类型错误直到运行期才能发现。

2.数据类型

最新的 ECMAScript 标准定义了 7 种数据类型:

6 种原始类型:

   Boolean
   Null
   Undefined
   Number
   String
   Symbol (ECMAScript 6 新定义)

Object

3.原始值( primitive values )

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

布尔类型(Boolean)

布尔表示一个逻辑实体,可以有两个值:true 和 false。

Null 类型

Null 类型只有一个值: null,更多详情可查看 null 和 Null 。

Undefined 类型

一个没有被赋值的变量会有个默认值 undefined,更多详情可查看 undefined 和 Undefined。

数字类型

根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(263 -1) 到 263 -1)。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:+Infinity,-Infinity 和 NaN (非数值,Not-a-Number)。

要检查值是否大于或小于 +/-Infinity,你可以使用常量 Number.MAX_VALUE 和 Number.MIN_VALUE。另外在 ECMAScript 6 中,你也可以通过 Number.isSafeInteger() 方法还有 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 来检查值是否在双精度浮点数的取值范围内。 超出这个范围,JavaScript 中的数字不再安全了,也就是只有 second mathematical interger 可以在 JavaScript 数字类型中正确表现。

数字类型只有一个整数,它有两种表示方法: 0 可表示为 -0 和 +0("0" 是 +0 的简写)。 在实践中,这也几乎没有影响。 例如 +0 === -0 为真。 但是,你可能要注意除以0的时候:

42 / +0; // Infinity
42 / -0; // -Infinity
字符串类型

JavaScript的字符串类型用于表示文本数据。它是一组16位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。

不同于类 C 语言,JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。例如:

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

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

注意代码中的“字符串类型”!
可以使用字符串来表达复杂的数据。以下是一些很好的性质:

容易连接构造复杂的字串符
字符串容易被调试(你看到的往往在字符串里)
字符串通常是许多APIs的常见标准 (input fields, local storage values, XMLHttpRequest当使用responseText等的时候回应) 而且他只能与字符串一同使用。
按照惯例, 字符串一般可以用来表达任何数据结构。这不是一个好主意。例如,使用一个分隔符,一个可以模仿一个列表(一个JavaScript的数组可能更适合一些) 。不幸的是,当一个分隔符在用于列表中的元素时,打乱了这个列表。 一个转义字符等。所有这些惯例都变成了一个不存在的维护负担而没有正确的工具使用。

表达文本数据和符号数据时候推荐使用字符串。当表达复杂的数据时,使用字符串解析和适当的缩写。

符号类型

符号(Symbols)是ECMAScript 第6版新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为Object的key的值(如下). 在某些语言当中也有类似的原子类型(Atoms). 你也可以认为为它们是C里面的枚举类型. 更多细节请看 Symbol 和 Symbol 。

对象Object

在 Javascript 里,对象可以被看作是一组属性的集合。用对象字面量语法来定义一个对象时,会自动初始化一组属性。(也就是说,你定义一个var a = "Hello",那么a本身就会有a.substring这个方法,以及a.length这个属性,以及其它;如果你定义了一个对象,var a = {},那么a就会自动有a.hasOwnProperty及a.constructor等属性和方法。)而后,这些属性还可以被增减。属性的值可以是任意类型,包括具有复杂数据结构的对象。属性使用键来标识,它的键值可以是一个字符串或者符号值(Symbol)。

ECMAScript定义的对象中有两种属性:数据属性和访问器属性。

数据属性
数据属性是键值对,并且每个数据属性拥有下列特性:

数据属性的特性(Attributes of a data property)

O(∩_∩)O哈哈~基础还是很重要的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102634.html

相关文章

  • JS数据类型、内置对象、包装类型对象、typeof关系

    摘要:平时在复习基础知识时,经常会遇到数据类型基础数据类型内置对象包装类型对象,检测数据类型时,用到的值,感觉都差不多,但是又有差异。值与数据类型关系对比下图,即可知值相较于基础数据类型少多 平时在复习JS基础知识时,经常会遇到JS数据类型、基础数据类型、内置对象、包装类型对象,检测数据类型时,用到的typeof值,感觉都差不多,但是又有差异。今天特地整理下,方便理解。 JS数据类型 基础数...

    OldPanda 评论0 收藏0
  • JS基础】初谈JS现有的数据类型

    摘要:相当于相当于相当于基础类型不属于包装的对象类型小结数据类型是每一个语言的基础由于属于弱类型脚本语言因此数据只有在赋值后才能直到变量的数据类型下一次我们具体介绍对象的概念 前言 在《你所不知道的javascript上篇》书籍 以及《javascript权威指南》等书籍里面, 均有介绍js的数据类型,对象,原型,继承。结合工作经验, 以及借用一些开源库和框架的源码, 进行一次梳理。 首先介...

    xeblog 评论0 收藏0
  • javascript --- 数据类型

    摘要:其他字符可以是字母下划线美元符号或数字。在使用声明变量,但没有对其初始化时,这个变量的值就是。从逻辑上思考,他们的值,一个是,一个报错他们的类型,却都是。这时,可以采用变量的类型进行比较。类型有两个值字面量和。 javascript 数据类型 javascript由于nodejs的出现将触角延伸至各个开发领域, 也由于 ES6等后续版本的推出对程序员越来越友好, 收到程序员的强烈推崇,...

    darcrand 评论0 收藏0
  • JavaScript入门

    摘要:介绍编程数据结构,算法,内存分配表单验证需要一门语言可以直接运行在浏览器中,来完成表单验证的功能。 Javascript介绍编程(数据结构,算法,内存分配)表单验证 需要一门语言可以直接运行在浏览器中,来完成表单验证的功能。 浏览器厂商 网景 firefox js 标准 js解释器 IE js js解释器 google js j...

    wangdai 评论0 收藏0
  • 33 个 js 核心概念(二):数据类型

    摘要:举个例子在上面的例子可以看到,我们声明是一个数字,但是我们在之后将的值又改成了字符串和布尔值后面会讲这些类型。基本类型字符串表示一个字符串,如。因此,我们可以写一个函数,用来精确检测类型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定义 1. 什么是数据类型? 数据类型,就是将...

    QiShare 评论0 收藏0
  • 前端进阶(11) - js 数据结构类型扩展:immutable-js

    摘要:数据结构类型扩展相对之类的强类型语言,有一点很大的区别就是,数据结构只有与,并且都是动态可变的,而有等数据结构。所以,为了能在中也使用这些数据结构,就应运而生。扩充了中的不可变集合,即一旦创建就不能改变的数据类型。 js 数据结构类型扩展:immutable-js 相对 java、.net 之类的强类型语言,js 有一点很大的区别就是,数据结构只有 array 与 object,并且都...

    BLUE 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<