前端面试题之前端基础(1)

153 阅读1分钟

1、null 和 undefined 的区别

undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态

undefined出现的几种情况:

1、声明了变量,但没有赋值
2、访问对象上不存在的属性
3、函数定义了形参,但没有传递实参
4、使用void对表达式求值

null属于类型Null

2、介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

  Set
  1.  成员不能重复;
  2.  只有键值,没有键名,有点类似数组;
  3.  可以遍历,方法有add、delete、has
  
  WeakSet
  1.  成员都是对象(引用)
  2.  成员都是弱引用,随时可以消失(不计入垃圾回收机制)。
  可以用来保存 DOM 节点,不容易造成内存泄露;
  3.  不能遍历,方法有add、delete、has;
  
  Map
  1.  本质上是键值对的集合,类似集合;
  2.  可以遍历,方法很多,可以跟各种数据格式转换;
  
  WeakMap
  1.  只接收对象为键名(null 除外),不接受其他类型的值作为键名;
  2.  键名指向的对象,不计入垃圾回收机制;
  3.  不能遍历,方法同get、set、has、delete;

3、js中内存泄露的情况

1、意外的全局变量
2、闭包
3、未被清空的定时器
4、未被销毁的事件监听
5、DOM引用

4、今日头条面试题,写出下边的运行结果

` // 今日头条面试题

async function async1() {

console.log('async1 start')

await async2()

console.log('async1 end')

}

async function async2() {

console.log('async2')

}

console.log('script start')

setTimeout(function () {

console.log('settimeout')

})

async1()

new Promise(function (resolve) {

console.log('promise1')

resolve()

}).then(function () {

console.log('promise2')

})

console.log('script end') `