JS面试题收集(持续更新好中...)

1.JavaScript 中的垃圾回收机制

定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。
JavaScript在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。

四种常见的内存泄漏:

  • 全局变量 不用var声明的变量,相当于挂载到window对象上,解决:使用严格模式
  • 未清除的定时器
  • 闭包
  • dom的引用:没有清理的dom元素引用

2.跨域解决方案

  1. (后端)服务器配置CORS(跨域资源共享)
  2. (后端)node.js或Nginx反向代理,把跨域改造成同域
  3. (前端)将JSON升级为JSONP在JSON基础上,利用

3.事件传播的三个阶段

捕获 > 目标 > 冒泡

在捕获阶段,事件通过父元素向下传递到目标元素
然后到达目标元素,冒泡开始

4.JavaScript中作用域是指什么?

在JavaScript中,每个函数都有自己的作用域。
作用域基本上是变量以及如何通过名称访问这些变量的规则的集合。
只有函数汇总的代码才能访问函数作用域内的变量。

在同一个作用域中的变量名必须是唯一的。一个作用域可以嵌套在另一个作用域内。如果一个作用域嵌套在另一个作用域内,最内部作用域的代码可以访问另一个作用域的变量。

5.JavaScript中的null和undefined

  • null 表示一个空的对象,什么也没有
  • undefined 表示声明未赋值
  • undefined 是从null派生出来的
null == undefined  // true
null === undefined // false
typeof(null) // object
typeof(undefined) // undefined