JavaScript中的八种数据类型

JS数据类型

1.对象(object)/引用值

无序属性的集合,其属性可以包含基本值、对象、或者函数

2.原始类型/原始值

​ 只能提供单一值,无法额外存储数据,所有的方法操作都是在对应的“对象包装器”创建临时对象的帮助下执行的。

Number

​ 除了常规的数字之外,还有所谓的“特殊数值”:Infinity和NaN

String

Boolean

“undefined”

“null”

Symbol

BigInt

着重看一下Symbol与BigInt这两个新的原始类型

Symbol
基本概念

Symbol 值表示唯一的标识符。

可以使用 Symbol() 来创建这种类型的值:

let name1 = Symbol("name");//"name"为描述,可选

即使相同描述,Symbol也不同。

let name1 = Symbol("name");//"name"为描述,可选
let name2 = Symbol("name");//"name"为描述,可选
console.log(name1===name2);//false

注意:Symbol并不支持字符串的隐式转换

我们无法:

alert(name1);

而是使用:

alert(name1.toString())

或是:

alert(name1.description)

所以在对象中使用Symbol时,我们应当:

let user = {
    [name1] : "john",
    age : 20
};

alert(user.age);

alert(user[name1]);
Symbol的用处:(核心:Symbol是唯一的)

1."隐藏"属性

​ 如果我们想要向“属于”另一个脚本或者库的对象添加一个属性,我们可以创建一个 Symbol 并使用它作为属性的键。

​ Symbol 属性不会出现在 for..in 中,因此它不会意外地被与其他属性一起处理。并且,它不会被直接访问,因为另一个脚本没有我们的 symbol。因此,该属性将受到保护,防止被意外使用或重写。

2.JavaScript 使用了许多系统 Symbol,这些 Symbol 可以作为 Symbol.* 访问。我们可以使用它们来改变一些内置行为。

全局Symbol

​ 通常所有的 Symbol 都是不同的,即使它们有相同的描述。但如果我们想创建两个不同地点的变量指向同一个Symbol呢

Symbol.for():在全局注册表中通过描述创建/查找Symbol

let name1 = Symbol.for("name");
let name2 = Symbol.for("name");
alert(name1===name2);//true

Symbol.keyFor():在全局注册表中通过全局Symbol查找其描述

let name1 = Symbol.for("name");
alert(Symbol.keyFor(name1));//name

注意:上面两个方法仅限全局Symbol

let name1 = Symbol("name");
alert(Symbol.keyFor(name1))//undefined
---------------------------------------
 let name1 = Symbol.for("name");
alert(Symbol.keyFor(name1))//name
BigInt

​ 在JS中,按照IEEE 754-2008标准的定义,所有数字都以双精度64位浮点格式表示。(-9007199254740991 (-(253-1))------9007199254740991(253-1))

​ 使用BigInt,应用程序不再需要变通方法或库来安全地表示Number.MAX_SAFE_INTEGERNumber.Min_SAFE_INTEGER之外的整数。

1.基础使用

​ 整数末尾追加n

console.log(123546489694555656161n);

​ BigInt不是构造函数,不能使用new操作符

BigInt("9007199254740995"); 
2.运算

​ 除一元加号运算符与无符号右移操作外,其余运算符与操作均可正常使用但除法(/)运算符的结果会自动向下舍入到最接近的整数。

​ 一元+运算符,将操作数转化为Number类型

+"3.0"//3
10 + "15"//1015
10 + + "15"//25
3.与Number类型的混合

​ 不能混合进行算术操作

​ 可以进行关系运算,位操作符可以使用但必须左右统一类型。

​ 不能把BigInt传递给需要Number类型参数的JS内置函数和Web API

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值