面试必会

(1) 执行上下文

其实就是在代码执行过程中,为其确定一个适当的执行顺序
包括:

  • 全局环境下的变量定义、函数声明
  • 局部环境下的变量定义、函数声明,this和arguments的确定

(2) this

this的值在执行时才能确认值,定义时无法确认
包括:

  • a. 作为构造函数执行:指向该构造函数的实例对象
  • b. 作为对象属性执行
  • c. 作为普通函数执行
  • d. call,apply,bind
  • e. 箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。

(3)作用域

变量和函数的可访问范围
包括:

  • a. 没有块级作用域,只有函数和全局作用域
  • b. 作用域链
  • b. 闭包的两个场景
  • d. 词法作用域

(4) 闭包

包括:
a. 函数作为返回值

    function f1(){
       var a = 100;
       return function(){
           console.log(a)
       }
    }
    var f2 = f1();
    var a = 200;
    f2();

b. 函数作为参数来传递

    function f1(){
    var a = 100;
        return function(){
            console.log(a)
        }
    }
    var f2 = f1();
    function f3(fn){
        var a = 200;
        fn():
    }
    f3(f2)

闭包特性

  • (1) 闭包可以读取函数内部变量
  • (2) 将函数内部变量的值始终保存在内存中

(5) 什么是异步?

不阻塞后面程序的进程

(6) 前端使用异步的场景:

包括:

  • a. 定时任务:setTimeout, setInterval
  • b. 网络请求:ajax请求,动态加载
  • c. 事件绑定

(7) DOM的本质

DOM的本质是为了操作文档出现的API,浏览器把拿到的html代码,结构化一个浏览器能识别并且js可操作的一个模型而已

(8) 请描述一下 cookie,sessionStorage和localStorage的区别

回答点:容量、是否会携带到ajax中,API易用性
包括:

  • a. cookie只有4kb,而sessionStorage和localStorage最大容量5M
  • b. cookie每次都会携带到ajax中,而sessionStorage和localStorage不会
  • c. sessionStorage和localStorage用起来比较简单,getItem,setItem就可以
  • d. sessionStorage在会话结束后,就会清理,locationStorage需要手动清理,不会自动清理

(9) AMD

包括:

  • a. require.js
  • b. 全局 define 函数
  • c. 全局 require 函数
  • d. 依赖JS会自动、异步加载、按需加载

(10) CommonJS

nodeJS模块化规范,现在被大量用于前端

(11) AMD和CommonJS使用场景

  • a. 需要异步加载JS,使用AMD
  • b. 使用 npm 之后建议使用 CommonJS

(12) 页面加载过程:从输入url到得到html的详细过程

包括:

(1) DNS解析

  • a. 浏览器根据 DNS 服务器得到域名的 IP 地址
  • b. 向这个 IP 的机器发送 http 请求
  • c. 服务器收到请求,处理并返回
  • d. 浏览器得到返回内容

(2) TCP三次握手

  • a. 发送端首先发送一个数据包给接收端
  • b. 接收端收到后回传一个数据包确认收到
  • c. 发送端发送一个数据包给接收端表示握手结束

(3) 浏览器发送HTTP请求

(4) 服务器处理请求并返回HTTP报文

(5) 浏览器渲染页面过程

  • a. 根据 HTML 结构生成 DOM Tree
  • b. 根据 CSS 生成 CSSOM
  • c. 将 DOM 和 CSSOM 整合成 RenderTree
  • d. 根据 RenderTree 开始渲染和展示
  • e. 遇到

你可能感兴趣的:(面试必会)