vue技术学习es6 语法学习Vue.js

ES6基础教程(第八节)——Symbol类型

2019-07-02  本文已影响0人  多平方

​es6对几大基础类型的扩展已经讲完了,调皮的es6还新增了一种类型,我们知道js有六大基础类型,分别是:

String 字符串类型

Number 数字类型

Object 对象类型

Boolean 布尔值类型

null 空值

undefined 未定义

现在又新增了一个小兄弟,叫Symbol,翻译一下就是标志、标记的意思,

这么一个数据类型是做什么的呢,标记个啥子呢?这个得从问题的源头出发,

在团队开发时候,很容易出现命名冲突问题,而且这个问题很难被发现,

出现bug的几率大大增加,发现的难度也是大大增加。所有就有了这么个类型,就是为了解决命名冲突问题,

//定义一个symbol类型的变量

let sym = Symbol();

console.log(sym);

//打印结果:Symbol()

console.log(typeof sym);

//打印结果:symbol

这样就定义了一个Symbol类型的变量,

现在我们定义两个Symbol类型的变量,尝试着判断他们是否相等:

let sm1 = Symbol();

let sm2 = Symbol();

sm1 === sm2 //结果:false

可以看出,就算是一致的,也是不相等的。

现在我们给Symbol添加参数:

let sym1 = Symbol('sym');

let sym2 = Symbol('sym');

sym1 === sym2

//结果:false

即使参数一样,描述一样,得到的值也是不相等的,所以Symbol类型永远都是唯一的。

let name = Symbol();

let person = {

[name]:"张三"

};

console.log(person[name]);

//结果:张三

console.log(person.name);

//结果:undefined

这是什么情况,为啥找不到name值呢?是不是瞬间一万只羊驼在奔腾,

其实原因是当symbol值作为对象的属性名的时候,不能用点运算符获取对应的值。

公众号
上一篇下一篇

猜你喜欢

热点阅读