JavaScript基础-变量和类型

转自重学前端https://time.geekbang.org/column/article/78884

JavaScript规定了几种语言类型

js规定了7中语言类型分别为Boolean、Null、Undefined、Number、String、Symbol、Object。

undefined 和null

undefined

  1. undefined 表示未定义,只有一个值undefined
  2. 任何变量赋值前都是undefined类型,值为undefined(而不是null)
  3. undefined是一个变量,而非一个关键字
  4. 需要表达这个值,可以用全局变量undefined,或者void运算

undefined是一个变量,我们避免无意中被篡改,建议使用void 0来获取undefined(等价于void (0) )。我们一般不会把变量赋值为undefined,这样可以保证所有的值为undefined的变量,都是从未赋值的自然状态。

null

null 表示的是:定义了但为空,null也只有一个值就是null。null是js的一个关键字,所以任何时候都可以用null关键字来换取null

Boolean

布尔类型有两个值。true和false,他们表示逻辑上的真和假,同样true和false也是js的关键字

String

String 用于表示文本数据。String 有最大长度是 2^53 - 1,这在一般开发中都是够用的,但是有趣的是,这个所谓最大长度,并不完全是你理解中的字符数。 因为 String 的意义并非“字符串”,而是字符串的 UTF16 编码,我们字符串的操作 charAt、charCodeAt、length 等方法针对的都是 UTF16 编码。所以,字符串的最大长度,实际上是受字符串的编码长度影响的。

Note:现行的字符集国际标准,字符是以 Unicode 的方式表示的,每一个 Unicode 的码点表示一个字符,理论上,Unicode 的范围是无限的。UTF 是 Unicode 的编码方式,规定了码点在计算机中的表示方法,常见的有 UTF16 和 UTF8。 Unicode 的码点通常用 U+??? 来表示,其中 ??? 是十六进制的码点值。 0-65536(U+0000 - U+FFFF)的码点被称为基本字符区域(BMP)。

Number

JavaScript 中的 Number 类型有 18437736874454810627(即 2^64-2^53+3) 个值。

JavaScript 中的 Number 类型基本符合 IEEE 754-2008 规定的双精度浮点数规则,但是 JavaScript 为了表达几个额外的语言场景(比如不让除以 0 出错,而引入了无穷大的概念),规定了几个例外情况:

  • NaN,占用了 9007199254740990,这原本是符合 IEEE 规则的数字;
  • Infinity,无穷大;
  • -Infinity,负无穷大。

另外,值得注意的是,JavaScript 中有 +0 和 -0,在加法类运算中它们没有区别,但是除法的场合则需要特别留意区分,“忘记检测除以 -0,而得到负无穷大”的情况经常会导致错误,而区分 +0 和 -0 的方式,正是检测 1/x 是 Infinity 还是 -Infinity。

同样根据浮点数的定义,非整数的 Number 类型无法用 ==(=== 也不行) 来比较,一段著名的代码,这也正是我们第三题的问题,为什么在 JavaScript 中,0.1+0.2 不能 =0.3:

  console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON);
复制代码

Symbol

Symbol 是 ES6 中引入的新类型,它是一切非字符串的对象 key 的集合,在 ES6 规范中,整个对象系统被用 Symbol 重塑。

Object

Object 是 JavaScript 中最复杂的类型,也是 JavaScript 的核心机制之一。Object 表示对象的意思,它是一切有形和无形物体的总称。

在js中,对象的定义是'属性的集合',属性分为数据属性和访问属性,二者均为key-value结构,key可以是字符串或者symboy类型。

转载于:https://juejin.im/post/5ce215ede51d4510af211261

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值