美文网首页
js高级部分 面试

js高级部分 面试

作者: 好名字都让你们用了 | 来源:发表于2019-08-28 17:00 被阅读0次
  • BOM部分
  • DOM事件
  • Promise和async/awiat
  • 防抖与节流

BOM

浏览器的内核

IE: trident内核

Firefox:gecko内核

Safari:webkit内核

Opera:Blink内核

Chrome:webkit

DOM事件

DOM事件级别.png

DOM1也是存在,只是没有涉及到事件,DOM3比DOM2多了键盘和鼠标一些事件

DOM的事件模型: 捕获----> 冒泡

DOM的事件流(三个阶段):捕获阶段---->目标阶段 -----> 冒泡阶段

DOM事件捕获的具体流程:

window---document---html---body---.... ---目标元素

DOM事件的Event对象的常见应用:

  • event.preventDefault() : 阻止默认事件
  • event.stopPropagation(): 阻止冒泡
  • event.stopImmediatePropagation(): 除了该事件的冒泡行为被阻止之外(event.stopPropagation方法的作用),该元素绑定的后序相同类型事件的监听函数的执行也将被阻止.
  • event.target: 返回触发事件的元素
  • event.currentTarget: 返回绑定事件的元素

DOM的自定义事件:

var  eve = new Event('eventName')
dom.addEventListener('eventName',function(){
})  //注册事件
dom.dispatchEvent(eve);   // 触发事件,
---------------------------------------------------------
这个事件不能添加参数,想要添加参数,得自定义 CustomEvent事件
// 添加一个适当的事件监听器
obj.addEventListener("cat", function(e) { process(e.detail) })
// 创建并分发事件
var event = new CustomEvent("cat", {"detail":{"hazcheeseburger":true}})
obj.dispatchEvent(event)

Promise 和async/awiat

  1. Promise的作用,promise如何进行多个数据的请求

  2. Promise.all([p1, p2, p3]).then()

  3. Promise.race([p1, p2, p3]) 方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝

    var p3 = new Promise(function(resolve, reject) { 
        setTimeout(resolve, 100, "three");
    });
    var p4 = new Promise(function(resolve, reject) { 
        setTimeout(reject, 500, "four"); 
    });
    
    Promise.race([p3, p4]).then(function(value) {
      console.log(value); // "three"
      // p3 更快,所以它完成了              
    }, function(reason) {
      // 未被调用
    });
    

    4.async/awiat的错误处理

async function f() {
  //  throw new Error('try again');
  await Promise.reject('出错了');
  await Promise.resolve('hello world'); // 不会执行
}
async function b() {
    try {
      await f();
    } catch(err) {
     console.log(err);
      b();
    }
}
b();    

防抖与节流

防抖(debounce):

​ 就是在一定的时间内事件只发生一次,比如你点击button按钮,1秒内任你单身30年手速点击无数次,他也还是只触发一次。

<body>
 <button id="debounce">防抖</button>
 <script>
 window.onload = function () {
  let obtn = document.getElementById('debounce'); //获取按钮
  obtn.addEventListener('click',debounce,false); //监听绑定事件
 }
 //执行函数
 let timer
 function debounce() {
    clearTimeout(timer); 
    timer = setTimeout(function(){ 
        console.log('防抖,防抖,防抖');
  },300)
 }
 </script>
</body>

使用场景:当你在页面中使用onkeyUp监听用户在input框中的输入,如果用户按住一个6不放,那监听事件岂不是一直被触发,这样就浪费了一部分性能了,那么我们在一定事件内监听,也就是说我过了一秒再来看看你输入了多少个6

节流(throttle):

节流就是在一定时间间隔内触发一次事件

面试题目:

  • JavaScript代码中的‘use strict’是什么意思

  • 说说你对amd和commonjs的理解

    Commonjs是前端模块化的一种规范,同步加载模块,主要使用于服务器端模块化开发,目前使用该规范的有nodejs
    AMD:是由commonjs衍生出来的用在浏览器端的异步模块加载规范,实现该规范的技术有require.js
    CMD:同步模块加载规范,实现该规范的技术有sea.js
    

相关文章

  • js高级部分 面试

    BOM部分 DOM事件 Promise和async/awiat 防抖与节流 BOM 浏览器的内核 IE: trid...

  • 前端JavaScript高级面试技巧[1]

    第1章 课程介绍 1-1 导学 课程概述 做什么?— 讲解前端 JS 高级面试题 哪些部分?— 高级基础, 框架原...

  • 面试知识体系整理

    中高级前端大厂面试秘籍 上篇中高级前端大厂面试秘籍 下篇 JS 原生面经从初级到高级

  • js高级部分

    js高级部分 BOM部分 DOM事件 Promise和async/awiat 防抖与节流 BOM 浏览器的内核 I...

  • 前端相关大杂烩

    前端基础面试题(JS部分) 前端基础面试题(JS部分)学习 React.js 比你想象的要简单 原文地址:Lear...

  • iOS高级面试题及部分答案

    iOS高级面试题及部分答案

  • 前端JavaScript面试技巧

    1-1 课程概述 要做什么?——讲解前端 JS 基础面试题 哪些部分?——JS 基础,JS-WEB-API,JS ...

  • l 主要分为以下几部分: (1)java 面试题 (2)Android 面试题 (3)高级开发技术面试题 (...

  • 前端面试路遥遥

    1、阅读简历 2、面试问题准备 2.1、html部分 2.2、css部分 2.3、js部分 2.4、框架部分部分 ...

  • 东哥面试题

    东哥面试题 ============ JS高级 1. 判断以下程序的输出结果: 答案: 100 50 解析: 构造...

网友评论

      本文标题:js高级部分 面试

      本文链接:https://www.haomeiwen.com/subject/bmsmectx.html