• js面试题


    1.节流和防抖

      节流:高频触发事件,在n秒内只执行一次

     1 function throttle (fn, delay) {
     2   let canRun = ture
     3   return function () {
     4     if (!canRun) return 
     5     canRun = false
     6     setTimeOut(()=> {
     7         fn.apply(this, arguments)
     8         canRun = true
     9     }, delay)
    10   }              
    11 }

      防抖:触发时间后n秒只执行一次,如果n秒内再次触发,则会重新计算时间

    function debounce (fn, delay) {
        let timer = null
        return function () {
            if (timer) clearTimeout(timer)
            timer = setTimeOut(() => {
                fn.apply(this, arguments)
            }, delay)
        }
    }

    2.get和post

    http协议从未规定GET/POST的请求长度是多少。对GET请求参数的限制是来源浏览器或WEB服务器,浏览器或者web服务器限制了url长度

    IE最大长度是2083Byte,谷歌的话是8182byte

    get和post在缓存方面的区别

    • get请求类似查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存
    • post一般是修改和删除工作,所以必须和数据库交互,所以不能使用缓存

    3.模块化发展

      IIFE:使用自执行函数来编写模块化;在一个单独的函数作用域中执行代码,避免变量冲突

    (function(){
      return {
        data:[]
      }
    })()

      AMD:使用require.js来编写模块化;依赖必须提前声明好

    define('./index.js',function(code){
        // code 就是index.js 返回的内容
    })

      CMD:使用seaJS来编写模块化;支持动态引入依赖文件

    define(function(require, exports, module) {  
      var indexCode = require('./index.js');
    })

      CommonJS:nodejs自带的模块化

    var fs = require('fs');

      ES Module:es6引入的模块化,支持import来引入另一个js

    import a from 'a';

    4.ES5的继承和ES6的继承有什么区别?

      es5的继承是通过prototype或构造函数机制来实现。es5的继承实质上是先创建子类的实例对象,然后将父类的方法添加到this上

      es6实质上是先创建父类的实例对象this,(所以必须先调用父类的super()方法),然后在用子类的构造函数修改this

    具体的:es6通过class定义类,里面有构造方法,类之间通过extends关键字实现继承。子类必须在constructor方法中调用super()方法,否则新实例报错。因为子类没有自己的this对象,而是继承了父类的this对象,然后对其加工。如果不调用super方法,子类得不到this对象

      

  • 相关阅读:
    html5图片异步上传/ 表单提交相关
    node 常用命令
    windows下 nvm下载node被墙了解决办法
    36.迷宫(广度优先搜索)
    36.迷宫(广度优先搜索)
    35.大质数
    35.大质数
    35.大质数
    35.大质数
    35.大质数
  • 原文地址:https://www.cnblogs.com/dropInInt/p/15095640.html
Copyright © 2020-2023  润新知