目录
3.使用 let 声明的变量和 var 声明的变量有什么区别?
1.Es6 中新增了那些数据类型?
解析:
Symbol 类型(基本)Set 类型(复杂)Map 类型(复杂)WeakSet 类型(复杂)WeakMap 类型(复杂)TypedArray 类型(复杂)
2.ES6 新增了那些特性?
解析:
const( 声明常量 )let( 声明变量 ) 关键字 ;map 和 set 数据类型 ;模板字符串 ;对象数组解构赋值 ;函数剩余参数 ;(...arg)延展运算符 ;(...)函数默认参数 ;fn(name=’zs’)对象字面量的增强 ( 属性名和属性值相同 , 可缺省 );Promise 异步对象 ;class 类的支持
3.使用 let 声明的变量和 var 声明的变量有什么区别?
解析:
let 声明的变量有块级作用域 , 并且没有变量的声明提升 ( 使用let 声明的变量在声明之前调用会报语法错误 );var 声明的变量有声明提升(在声明之前调用会报 undefined), 没有块级作用域.
4.谈谈 async/await 的使用方式和场景。
解析:
async 是用来修饰函数的声明 , 使用 async 修饰的函数会变成一个异步函数。await 用来修饰函数的调用 , 被 await 修饰的函数必须返回一个50promise 异步对象 , 使用 await 修饰后 , 就会将 promise 异步对象转换成一个同步操作。
5.箭头函数有什么作用及实际应用场景?
解析:
- 箭头函数可以使函数内部的 this 指向和函数外部保持一致;
- 箭头函数之所以可以让函数内部的 this 指向和外部保持一致是因为箭头函数内部没有 this 指向.
- 可以在 ajax 的回调函数中使用箭头函数让回调函数中的 this 指向事件源;
- 可以在定时器的第二个参数中使用箭头函数, 避免函数内部的 this 指向全局 window.
6.class 类的如何实现继承?
解析:extends 关键字
class Person{
constructor(props){
this.name=props.name;
this.age=props.age;
}
}
// Student 继承 Person
class Student extends Person{
constructor(props){
super(props);
this.score=props.score;
}
}
7.谈谈对 Promise 的理解
解析:
* Promise 本身并没有提供任何的代码逻辑 , 它只是帮助我们来 改造代码结构 , 最显著的一个特点就是 通过 Promise 可以解决传统的回调地狱 . 代码层面 Promise 提供了一个 构造函数 , 在使用的时候必须通过 new 创建一个实例对象 , 在创建实对象的时候需要传递一个 匿名函数 , 这个匿名函数需要两个参数( resolve , reject ), resolve 成功处理函数, reject 失败处理函数 .什么时候触发成功处理函数和失败处理函数 , 由具体的业务逻辑来决定. resolve 和 reject 需要通过 Promise 实例对象提供的 then 方法来传递 .Promise 提供了两个静态方法 all,race,all 可以一次执行多个Promise 实例 , 返回值是数组 ; race 也可以一次执行多 个 Promise 实例 , 哪个实例最先执行完 , 就返回哪个的执行结果。
面试技巧
提问说说你最大的缺点
回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。