ES6面试题(常见类型)

1、在子类中使用构造方法要注意什么?

必须调用父类构造方法super()
在构造方法中super()必须写在使用this之前

2、箭头函数

箭头函数的this绑定为定义箭头函数的环境中的this
箭头函数不能做构造方法
箭头函数的中不能使用arguments

3、localStorage

单个域容量5MB
生命周期永久,sessionStorage是会话周期
storage事件监听数据改变、删除,在window上监听此事件,
本窗口不能监听到本窗口的storage事件

4、用async声明的函数返回值是什么?await怎么使用?

用async声明的函数返回值是Promise对象
await只能在async函数内使用,await后面跟一个Promise对象

5、import使用有什么特点?

可以按需导入
import {a, b} from '...'
导入默认值时不需要写花括号 import A from '...'
导入变量可以重命名

6、export使用有什么特点?

除默认导出外,导出项必须是一个声明的变量
可以导出任意多个变量
同一个模块的导出项中不允许重名
export语句只能写在模块的顶级块中
可以聚合导出(写在花括号里)并且用as重命名
默认导出不关心名字

7、模块中的javascript有什么要求?

默认严格模式

8、script标签中如何能启用模块?

<script type=""module"">...</script>

9、js中的模块是指什么?

就是指一个js文件

10、Promise.prototype.catch如何使用

promise.catch(处理出错的回调函数) promise.catch((error) => {...})

11、Promise.prototype.then如何使用?

promise.then(成功的回调函数, 失败的回调函数)

12、Promise对象的三种状态,及特点

pending(进行中)
fullfilled (成功)
rejected(失败)
一旦状态从pending改变,就不会再变了。

13、Promise构造函数是同步执行还是异步执行,那么 then 方法呢?new Promise呢?

promise构造函数是同步执行的,then方法是异步执行的, new Promise是同步操作

14、function 存在变量提升现象吗?class呢?

function会变量提升,class不会

15、如何得到实例(instance)上的原型

instance.proto
或 Object.getPrototypeOf(instance)

16、字符串模版应该用什么引号?

反引号 ``
反引号字符串比普通字符串有什么区别?
1.里面可以写多行文本
2.里面可以用${...}插入表达式

17、数组.filter方法的回调函数需要返回值吗?如果需要,返回什么内容?

需要 返回true/false

18、数组.map的回调函数需要返回值吗?如需要返回什么内容?

需要,可以返回新的数组

19、map/forEach等迭代方法的第一个参数是回调函数,回调函数的参数有几个,各代表什么含义?

最多3个参数
function(item, index, arraySelf) {...}
分别代表 
oitem - 数组的元素 index
o该元素的下标 arraySelf
o被迭代数组自己

20、cookie的特点

单条大小4096字节(4kb)
单个域名下的cookie数量有限
可以跨页面、浏览器生存周期存在
可以设置域、路径、过期时间
兼容性好,几乎所有浏览器都支持

21、跨页面存储数据有哪些方法

cookie
localStorage/sessionStorage(web storage)

22、let/const/var的区别

var声明变量可以重复声明,而let不可以重复声明
var是不受限于块级的,而let是受限于块级
var会与window相映射(会挂一个属性),而let不与window相映射
var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错
const声明之后必须赋值,否则会报错
const定义不可变的量,改变了就会报错
const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

22、①es6中字符串模版用什么符号,②有什么用途,③如果将[[‘a’,1], [‘b’, 2], [‘c’,3]]转化为字符串”(a=1)+(b=2)+(c=3)” 用字符串模版和数组迭代方法应该怎样写?

① 反引号
② 支持多行文本;可以写表达式插值;
③ [['a',1], ['b', 2], ['c',3]].map(item => `(${item[0]}=${item[1]})`).join(',')

23、①将object序列化的方法是什么?②如果一个序列化的字符串从localStorage中取出还原为对象怎样写;③如何删除 localStorage 数据?

①JSON.stringify(obj)
② JSON.parse(localStorage.getItem(key))
③ localStorage.removeItem(key)

24、按要求写以下过程:①声明类A;②声明类B继承A,③B有构造方法,④构造方法输入参数lastname(姓)和firstname(名)并赋值给类的同名属性;⑤B有getter函数声明的属性fullname(全名),fullname是实例属性lastname和firstname的合并值;⑥用B实例化b,并console.log(b.fullname)应该结果是张三。

① class A {}
② class B extends A {
③   constructor(④lastname, firstname) {
③       super()
④           this.lastname = lastname
④           this.firstname = firstname
        }  
⑤       get fullname() { return this.lastname + this.firstname}
}
⑥ let b = new B('张', '三'); console.log(b.fullname);

25、解构与扩展

const fn = ({1: a=1, length: b}, ...c) => { console.log(a, b, c)}
fn({}) // a? b? c? ①
fn([1, 2, 3], 4) // a? b? c? ②
fn('xyz', 'o', 'p', 'q') // a? b? c? ③

let obj = {name: '李四', age: 18}
let obj2 = {name: '张三', ...obj, age: 19}
console.log(obj2) // obj2? ④

26、async修饰的函数返回的是①什么类型?②await后面应该写什么类型的对象?③await关键字可以在哪里使用?

① Promise实例
② Promise实例
③ async修饰的function或module里

27、描述Promise.all/race的①参数类型?②返回Promise实例的状态是成功或失败的规则?

① 数组,每个元素是Promise实例
② all 全部成功则成功,任何一个失败则失败;race 最快改变状态的就是返回promise的状态。

28、时序题,以下代码打印结果是什么?

setTimeout(() => console.log(1))
Promise.resolve().then(() => console.log(2))
console.log(3)
Promise.reject().then(() => console.log(4), () => {console.log(6)})
Promise.resolve().then(() => console.log(5))
JavaScript
3 2 6 5 1
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值