以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - 前端面试问题
125. 请说明EventTarget.addEventListener() 的第三个参数

当第三个参数为Boolean值时,它表示事件是否在捕获或冒泡阶段处理。如果为true,则在捕获阶段处理事件;如果为false(默认值),则在冒泡阶段处理事件。

当第三个参数为Object时,它表示一个选项对象,可以设置以下属性:

  • capture:和Boolean值的含义一样,表示是否在捕获阶段处理事件。
  • once:表示事件是否只处理一次。如果为true,则事件处理完成后自动移除该监听器,之后不会再触发事件。
  • passive:表示是否不会调用preventDefault()方法。当该属性为true时,在事件处理函数中调用preventDefault()方法也不会阻止默认行为。

示例:

// 在捕获阶段处理click事件
element.addEventListener('click', eventHandler, true);

// 只处理一次click事件
element.addEventListener('click', eventHandler, { once: true });

// 在事件处理函数中调用preventDefault()方法不会阻止默认行为
element.addEventListener('touchstart', function(event) {
  event.preventDefault();
}, { passive: true });

需要注意的是,这些选项不是所有浏览器都支持,可以通过判断浏览器是否支持相应选项来决定是否使用。