欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端常见面试题2019(二)

程序员文章站 2022-04-18 21:55:50
...

1. 清除浮动的几种方式?为什么要清除浮动呢?

答:

  1. 添加新的元素,应用clear:both;(额外标签法)
.clear{clear:both; height: 0; line-height: 0; font-size: 0}
  1. 父级div定义overflow:auto;
  2. 使用:after方法,作用与浮动元素的父元素。(伪元素)
.clearfix:after{
     content:"";//设置内容为空

      height:0;//高度为0

      line-height:0;//行高为0

      display:block;//将文本转为块级元素

      visibility:hidden;//将元素隐藏

      clear:both//清除浮动

     }

    .clearfix{

      zoom:1;为了兼容IE(触发IE的haslayout属性)    
 }
  1. 使用双伪元素
.clearfix:before,.clearfix:after {

                  content: "";

                  display: block;

                  clear: both;

            }

            .clearfix {

                  zoom: 1;

            }

2. javascript作用域和闭包?

答:变量作用域:包括全局变量和局部变量(函数内部可以直接读取全局变量&函数外部自然不能读取函数内部的局部变量)

  1. 函数作用域:函数的局部变量仅对函数内部可见。
  2. 词法作用域:函数的嵌套关系是定义的时候决定的,而不是调用的时候决定的,即嵌套关系是词法分析时确定的,而非运行时决定。
  3. 全局作用域:在最外层定义的变量,全局对象的变量,任何地方隐匿定义的变量。
  4. 没有块级作用域。

闭包:就是能够读取其他函数内部变量的函数。也可以理解成”定义在一个函数内部的函数”;
闭包的用途就是一可以读取函数内部的变量,二就是让这些变量的值始终保存在内存中。(内存会消耗过大,所以不能滥用闭包)。
简单例子:↓

function f1(){
    var n=999;
    function f2(){
      alert(n); 
    }
    return f2;
  }
  var result=f1();
  result(); // 999

AJAX的步骤?

  1. 创建ajax对象;
  2. 发出HTTP请求;
  3. 接收服务器传回的数据;
  4. 更新网页数据。
// 1.创建异步对象
    var xhr = new XMLHttpRequest();
    // 2.设置请求行(get请求数据写在url后面)
    xhr.open('get','xxx.php');
    // 3.设置请求头(get请求可以省略,post不发数据也可以省略)
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    // 4.注册状态改变事件
    xhr.onreadystatechange = function () {
        // 4.1判断状态&请求是否成功并使用数据
        if(xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
            
        }
    }
    // 5.请求主体发送(get请求为空,或者写null。post请求数据写在这里,
    // 如果没有数据,直接为空或者写null)
    xhr.send(null);

一个页面从输入URL到页面加载显示完成,这个过程发生了什么?(流程说的越详细越好)

答:

  1. 浏览器查找域名的IP地址,这一步包括DNS具体的查找过程(包括:浏览器缓存-》系统缓存-》路由器缓存…)
  2. 浏览器向web服务器发送一个HTTP请求;
  3. 服务器的永久重定向响应(从http://example.com到http://www.example.com);
  4. 浏览器跟踪重定向地址;
  5. 服务器处理请求;
  6. 服务器返回一个HTTP响应;
  7. 浏览器显示HTML;
  8. 浏览器发送请求获取嵌入在HTML中的 资源(如图片、音频、视频、css、js等等);
  9. 浏览器发送异步请求。

JS跨域请求的方式,能写几种写几种?

答:

  1. 通过jsonp跨域;
  2. 通过修改document.domain来跨子域;
  3. 使用window.name来进行跨域;
  4. 使用HTML5新引进的window.postMessage方法来进行跨域(ie6 7不支持);
  5. CORS需要服务器设置header:Access-Control-Allow-Origin;
  6. nginx反向代理 这个方法可以不用目标服务器配合,不过需要搭建一个中转nginx服务器,用于转发请求。
相关标签: 前端面试 面试