前段时间换了份工作,也经历了很多面试,最终通常都会扑在算法上

【要点】

jqery  入口函数主要有4种写法,其中以第3种方法最为方便。

虽说前端是所有程序员中,对于算法的要求最低的一个岗位,但算法依旧是进阶的必修课

  1. 前端错误的分类

  2. 错误的捕获方式

  3. 上报错误的基本原理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src='js/jquery-1.12.4.js'></script>
    <script>
        //1.
        $(document).ready(function(){
            alert('1111');
        })

        //2.
        jQuery().ready(function(){
            alert('222');
        })

        //3.
        $(function(){
            alert('gogo');
        })

        jQuery(function(){
            alert('hoho');
        })

    </script>
</head>
<body>

</body>
</html>

于是决定记录一下与算法相关的面试题,以后拿去面别人

 

 

 

【总结】

一、面试题

1. 错误分类


  • 运行时错误,代码错误
  • 资源加载错误

 

问:有一个一百层的高楼,现在给你两个完全一样的玻璃球,去测出在哪一层楼把球扔出去,刚好能把玻璃球砸碎?

2.捕获方式


  • 代码错误捕获

    •   try … catch:

      try {
          console.log("欢迎光临!");
      }
      catch(err) {
          document.getElementById("xxx").innerHTML = err.message;
      }
      
    •   window.onerror

      1 window.onerror = function(){
      2 
      3     console.log(error msg);
      4 
      5 }
      
  • 资源加载错误  (不会冒泡到window,
    这也是window.onerror捕获不到的原因)

    • object.onerror:img标签、script标签都可以添加onerror事件,用来捕获资源加载错误;
    • performance.getEntries():可以获取所有已加载资源的加载时间,通过这种方式,可以间接的拿到没有加载的资源错误。
    • Error事件捕获:资源加载错误,虽然会阻止冒泡,但是不会阻止捕获。true:捕获,false:冒泡

  图片 1图片 2

 

  【延申】

       
 跨域js运行错误也是可以捕获到的,但是拿不到具体的信息,比如:出错行号、出错列号,错误详情等,这种问题应该怎么处理呢?

   分两步:

  • 1.在script标签上增加crossorigin属性;
  • 2.设置js资源响应头Access-Control-Allow-Origin:*;(也可以设置特定的域名)
    这样就可以拿到具体的错误信息了

 

答:emmmmmm

3.上报错误的基本原理


1. 利用Ajax通信的方式上报

2.利用Image对象上报 (推荐的方式) 是大部分浏览器的监控体系选择的方法

图片 3

 然后在network中就可以看到发送了请求

图片 4

问:球碎了就没法用了

答:那如果没碎呢?

问:emmmmmm

答:啊哈,那就拿着球从一楼往上,一层一层的试呗~

发表评论

电子邮件地址不会被公开。 必填项已用*标注