zoukankan      html  css  js  c++  java
  • 本周面试总结

    一、什么是防抖和节流?如何实现防抖和节流,请写出主要代码

    函数防抖和节流,都是控制事件触发频率的方法

    节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。

    防抖 、指触发事件后,就是把触发非常频繁的事件合并成一次去执行。

    即在指定时间内只执行一次回调函数,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算。

    0.回顶部的案例

    1.节流的代码实现

    //节流的实现
    function throttle(fn,delay){
        let valid = true;
        return function() {
           if(!valid){
               //休息时间 暂不接客
               return false 
           }
           // 工作时间,执行函数并且在间隔期内把状态位设为无效
            valid = false
            setTimeout(() => {
                fn()
                valid = true;
            }, delay)
        }
    }
    /* 请注意,节流函数并不止上面这种实现方案,
       例如可以完全不借助setTimeout,可以把状态位换成时间戳,然后利用时间戳差值是否大于指定间隔时间来做判定。
       也可以直接将setTimeout的返回的标记当做判断条件-判断当前定时器是否存在,如果存在表示还在冷却,并且在执行fn之后消除定时器表示激活,原理都一样
        */
    
    // 以下照旧
    function showTop  () {
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
      console.log('滚动条位置:' + scrollTop);
    }
    window.onscroll = throttle(showTop,1000) 

    2.防抖的代码实现

    防抖就实现了(debounce)
    function debounce(fn,delay){
        let timer = null //借助闭包
        return function() {
            if(timer){
                clearTimeout(timer) 
            }
            timer = setTimeout(fn,delay) // 简化写法
        }
    }
    // 然后是旧代码
    function showTop  () {
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
      console.log('滚动条位置:' + scrollTop);
    }
    window.onscroll = debounce(showTop,1000);

    二、箭头函数和普通函数的区别

    1.箭头函数是匿名函数,不能作为构造函数,不能使用new

    2.将头函数不能绑定arguments,取而代之用rest参数...解决

    3.箭头函数没用原型属性

    var a = ()=>{
      return 1;
    }
    
    function b(){
      return 2;
    }
    
    console.log(a.prototype);  // undefined
    console.log(b.prototype);   // {constructor: ƒ}

    4.箭头函数中没有this机制,普通函数的this指向调用他的对象,没有办法改变其指向

    5.扩展argumentsdui一、什么是防抖和节流?如何实现防抖和节流,请写出主要代码

    函数防抖和节流,都是控制事件触发频率的方法

    节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。

    防抖 、指触发事件后,就是把触发非常频繁的事件合并成一次去执行。

    即在指定时间内只执行一次回调函数,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算。

    二、箭头函数和普通函数的区别

    1.箭头函数是匿名函数,不能作为构造函数,不能使用new

    2.将头函数不能绑定arguments,取而代之用rest参数...解决

    3.箭头函数没用原型属性

    var a = ()=>{

      return 1;

    }

    function b(){

      return 2;

    }

    console.log(a.prototype);  // undefined

    console.log(b.prototype);   // {constructor: ƒ}

    4.箭头函数中没有this机制,普通函数的this指向调用他的对象,没有办法改变其指向

    5.扩展arguments对象,js中每一个函数都会有一个Arguments对象实例化arguments,他应用这函数的参数,可以通过数组下标引用。arguments.length为函数实参个数

        特性:

        1.arguments对象和Function是分不开的。

        2.因为arguments这个对象不能显式创建。

        3.arguments对象只有函数开始时才可用。

    function test() {
            var s = "";
            for (var i = 0; i < arguments.length; i++) {
                alert(arguments[i]);
                s += arguments[i] + ",";
            }
            return s;
    }
    test("name", "age");
    alert: name alert: age "name,age,"

    三、src和href的区别

    1.href表示超文本引用,用来建立当前元素和文档的链接。常用的有:link和a。例如引入文件时浏览器会识别该文档,下载的同时、并且不会停止对当前文档的处理。这也是建议使用link,而不采用@import加载css的原因

    2.src是引入,src指向的内容会嵌入到当前文档中当前标签所在位置。例如img、script。例如当浏览器解析到script时,会暂停浏览器的渲染,直到该资源加载完毕。这也是将js脚本放在底部而不是头部的原因。

    四、什么是优雅降级和渐进增强

    渐进增强:

    一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。

    优雅降级:

    一开始就构建的完整功能,然后再针对低版本浏览器进行兼容。

    区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

    三、src和href的区别

    1.href表示超文本引用,用来建立当前元素和文档的链接。常用的有:link和a。例如引入文件时浏览器会识别该文档,下载的同时、并且不会停止对当前文档的处理。这也是建议使用link,而不采用@import加载css的原因

    2.src是引入,src指向的内容会嵌入到当前文档中当前标签所在位置。例如img、script。例如当浏览器解析到script时,会暂停浏览器的渲染,直到该资源加载完毕。这也是将js脚本放在底部而不是头部的原因。

    四、什么是优雅降级和渐进增强

    渐进增强:

    一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。

    优雅降级:

    一开始就构建的完整功能,然后再针对低版本浏览器进行兼容。

    区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

    勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!
  • 相关阅读:
    k8s二进制安装
    jenkins
    Deploy Apollo on Kubernetes
    Apollo配置中心搭建常见报错
    Apollo配置中心搭建过程
    使用CephRBD为Kubernetes提供StorageClass
    Ceph基础命令总结
    Ceph分布式存储系统搭建
    zabbix入门之配置邮件告警
    zabbix入门之定义触发器
  • 原文地址:https://www.cnblogs.com/qiaozhiming123/p/14709746.html
Copyright © 2011-2022 走看看