ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 咕笛老师:虽然简单,但是出现频率巨高,是100%不能出错的 > 5个简单数据类型(基本数据类型)+ 1个复杂数据类型 * undefined * number * string * null * boolean * object * ES6 新增Symbol 重点说说这个symbol,因为面试官专门会挑这个来问。 它的最大特点是“独一无二”,你用symbol声明了两个变量,他们永远不相等! ~~~dart // 没有参数的情况 var s1 = Symbol(); var s2 = Symbol(); s1 === s2 // false // 有参数的情况 var s1 = Symbol("foo"); var s2 = Symbol("foo"); s1 === s2 // false ~~~ 那么这个symbol到底要在什么场景下用呢??? 看下面这个例子: 我想定义一个图形类型的对象,但其实是为了凑这个对象的key/value结构,才给每个对象属性去赋了一个值叫“round1”啥的,对吧? ~~~javascript var shapeType = { round:'round1', triangle:'triangle1', rectangle:'rectangle1' } ~~~ 现在,我有一个方法,这个方法只需要判断shapeType.round还是shapeType.triangle就够了,不关心后面这个具体的值是什么,那我去单独赋一个"round1"就是一个多余的事,但又不能不加。 这时,就可以用symbol了,省得去花脑子去取一个名字了。 ~~~javascript var shapeType = { round:Symbol(), triangle:Symbol(), rectangle:Symbol() } ~~~