> 咕笛老师:虽然简单,但是出现频率巨高,是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()
}
~~~
- js面试题
- 说一下自己常用的es6的功能?
- 页面渲染html的过程?
- 说一下事件代理?
- 说一下继承的几种方式及优缺点?
- 说一下闭包?
- 对JSONP的理解*
- 基本的数据类型有哪些?
- js程序题
- JS找字符串中出现最多的字符
- 数组去重怎么作?
- 变量提升的这道题你会吗
- 用一段代码思考this的指向问题
- 这些类型的typeof返回什么值?
- 怎样添加、移除、移动、复制、创建和查找节点?
- css面试题
- css水平、垂直居中的写法,请至少写出4种
- 1rem、1em、1vh、1px各自代表的含义?
- 说一下盒模型?
- 清除浮动的几种方式,及原理?
- b与strong的区别?
- img中的alt与title属性?
- 浏览器兼容性
- IE6的BUG你都遇过哪些?怎么解决的?
- html面试题
- 对HTML结构语义化的理解?
- 前端工程化面试题
- webpack
- export和export default的区别?
- VueJs面试题
- 基础
- 生命周期
- vue路由(vue-router)
- 状态管理(vuex)
- axios
- vue-cli框架
- 前端架构面试题
- HTTP
- get、post的区别
- 你所知道的http的响应码及含义?