前端知识每日小拷问 002

前端知识小拷问 002


准备接收大前端形法的考验吧!?每日5题,直击你的心里 ~~
仓库地址:https://github.com/RiversCoder/fontend-question-ten-everyday前端

  1. 如何计算白屏、首屏时间?
  • 白屏时间:<head> 标签解析完就是白屏的结束时间点,在head标签中先后打点,计算差值
  • 首屏时间:首屏时间是指用户打开网站开始,到浏览器首屏页面内容渲染完成的时间,重要;因为在页面上可能存在不少异步加载的需求,因此建议最好使用devtool中的timeline工具
  1. 什么是闭包?
  • 闭包就是可以读取其余函数内部变量的函数
  1. 什么是做用域链?
  • 做用域是针对变量的
  • 做用域的特色就是,先在本身的变量范围中查找,若是找不到,就会沿着做用域逐级往上查找变量。
  1. ajax的实现,readyState中的五种状态分别表明什么含义?
  • ajax请求实现调用
var getXmlHttpRequest = function () {
    if (window.XMLHttpRequest) {
        //主流浏览器提供了XMLHttpRequest对象
        return new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        //低版本的IE浏览器没有提供XMLHttpRequest对象
        //因此必须使用IE浏览器的特定实现ActiveXObject
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        //获取成功后执行操做
        //数据在xhr.responseText
    }
};
xhr.open("TYPE", "URL", true);
xhr.send("");
  • readyState中的五种状态
状态码 表明的含义
0 未初始化状态 初始化xhr对象
1 准备发送状态 调用open
2 已经发送状态 调用send
3 正在接收状态 响应到HTTP响应头部信息
4 响应完成状态 完成了HTTP响应的接收
  • 目前则更多的是使用 onload 方法
  1. 如何实现 jsonp?
  • 定义一个函数,用于处理接收到的跨域数据。
  • 建立一个script节点,而后src属性上拼接发送的目的URL以及callback字符参数。
  • 在跨域服务器端接收GET请求,获取cabback参数,拼接好,返回数据。
  • 删除以前生成的script节点。