面试 小技巧

95 阅读9分钟

1.新增语义化标签


    <section> 定义文档中的区段,页面上的版块,用于划分页面上的不同区域,或者划分文章里不同的节

 

    <nav>定义导航

 

    <asider> 定义文章的侧边栏

 

    <figure> 标签规定独立的流内容(图像、图表、照片、代码等等)。

 

    <figcaption> figure的子元素 用于对figure的内容 进行说明

 

    <header>定义页眉、网页或section的头部

 

    <footer>定义页脚 ,网页或section底部的内容

 

    <hgroup>定义对网页标题的组合

 

    <time></time>定义日期和时间

 

    <dialog>定义一个对话框

 

    <datalist></datalist>选项列表。与 input 元素配合使用,来定义 input 可能的值。

 

    <mark>在视觉上向那些想要突出的文字,比如搜索结果中向用户高亮显示搜索关键词

 

    <details></details>标签用于描述文档或文档某个部分的细节,summary是details元素的标题

 

    < summary></summary> details 元素的标题。该元素用于摘录引用等 应该与页面的主要内容区

    分开的其他内容

 

    <progress> 进度条,运行中、加载中的进度。

 

    <meter> 数据区间中绘制一个值的占比与状态

 

    <audio></audio>定义音频,可以支持多个source(媒介标签,这里没有写错,这个标签可

    以省略/),浏览器默认将第一个能识别的格式进行播放

 

    <video></video> 定义电影片段或者其他视频流,支持三种类型的视频: OggMPEG4WebM

 

    <svg>使用XML技术绘制可缩放矢量图形的语言,可使用扩展名.svg的xml定义,也可以内嵌在html中

 

    <canvas> 用来进行canvas绘图,该标签为图形容器,通过js找到标签的操作对象来画图

2.什么是闭包,会对浏览器性能 有什么影响


    一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被

    引用包围),这样的组合就是闭包(closure)。也就是说,闭包让你可以在一个内层函数中访问

    到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被

    创建出来。

    

    产生闭包的条件:

        一个外部函数里面嵌套着一个内部函数;比如外部函数f1里面嵌套了一个内部函数f2

        一个嵌套的内部函数调用了外部函数的内部变量或函数;比如f2内部函数调用了外部函数f1

        的变量n只要满足以上两个条件,就产生了闭包。

 

3.作用域有哪些


    1)什么是作用域

        Javascript中的作用域说的是变量的可访问性和可见性。也就是说整个程序中哪些部

        分可以访问这个变量,或者说这个变量都在哪些地方可见。

    2) 作用域的类型

        全局作用域

            任何不在函数中或是大括号中声明的变量,都是在全局作用域下,全局作用域下声明的

            变量可以在程序的任意位置访问

        局部作用域

            函数作用域也叫局部作用域,如果一个变量是在函数内部声明的它就在一个函数作用域

            下面。这些变量只能在函数内部访问,不能在函数以外去访问。

        块级作用域

            ES6引入了`let``const`关键字,和`var`关键字不同,在大括号中使用

            `let``const`声明的变量存在于块级作用域中。在大括号之外不能访问这些变量。

4.ajax 的流程


    1) 创建 ajax

        const xhr = new XMLHttpRequest()

    2) 配置 ajax

        xhr.open()

    3) 发送 ajax

        xhr.send()

    4) 监听 ajax

        xhr.onload = function () {

            console.log(xhr.responseText)

        }

image.png

 


    Ajax的工作原理相当于在用户和服务器之间加了一个中间层(AJAX引擎),使用户操作与服务器响应异

步化。客户端发送请求,请求交给xhr,xhr把请求提交给服务器,服务器进行业务处理,服务器响应数据

交给xhr对象,xhr对象接收数据,由javascript把数据写到页面上


    ajax 流程

        利用了一个数字表明 ajax 当前运行到哪一步了

        0:ajax 创建完毕

        1:ajax 配置完成

        2:ajax 发送完毕(后端已经对请求做出响应,并把请求返回 浏览器)

        3:浏览器开始解析后端返回的内容,如果返回的数据比较少,那么此时就可以使用数据了,但是

        有可能没有解析完毕,数据不完整,所以不推荐在这里使用数据

        4: 浏览器的解析的内容已经全部处理完毕,我们可以开始是用数据了

5.继承


    1) 原型继承

        这种继承方式是将 自己的原型对象更改为 要继承的 父类的 实例化对象

        缺点 自己的原型 被修改了

    2)借用继承

        借用继承就是将属性继承到自己的身上 这种继承方式 可以将父级的所有属性继承到子类

        对象自身 但是父类的原型上的属性和方法,跟子类没有任何关系

    3)组合继承

        基于上述,将原型继承和借用继承组合起来,创建了一个 组合继承

        优点: 能够继承到所有的属性和原型上的方法 并且属性能够继承到对象本身

        缺点: 在原型上会多一套多余的属性

    4)拷贝继承

        

    5ES6继承

        在 实现 ES6 类的继承的时候,书写方式有几个要求

        1. class 子类的类名 extends 要继承的父类类名 {}

        2. constructor 内部 内部必须书写 super

            它的 作用可以在调用的时候 对他进行传参,传参的参数会传递到 父类 中

            注意: 哪怕父类不需要任何参数,我们的 super 也需要书写

                   并且需要书写在 constructor 内部的 第一行

            当前方法只能 给 class 类 使用

                但是可以继承到构造函数中的 内容, 也就是说 父类是 构造函数或者 class 都可以

6.原型链和 作用域链 的区别


    当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止,

    到查找到达原型链的顶部(也就是 Object.prototype),如果仍然没有找到指定的属性,

    就会返回 undefined。

    区别: 1. 作用域是对于变量而言,原型链是对于对象的属性。

           2. 作用域链顶层是window,原型链顶层是Object。

           联系:从链表开头寻找,直到找到为止。

7.模块化


    必备条件

        1)必须是服务器启动页面

        2)在 script 标签 内 添加 type="module"

 

    导出 export default {  }  一个 文件只能书写一个

    导入 import 变量 from '文件地址'

    

    导入 export 变量

    导出 import  { 一一对应 } from '文件地址'

 ```

### 8.开发中用到对象 与 数组

```JS

    数组: 开发中 比如说 商品列表。一些大体相同的

    对象:针某一东西的详情

9.


    const obj = { a:[] } 修改 属性 a 的地址 可不可以更换?

    const onj = { a: [], name: 'sdaq' } 可不可以修改?

10. ES6 新增的方法 和 东西


    1)解构赋值

    2)箭头函数

    3)展开运算符

    4this 指向

    5)对象的优化

    6SetMap 数据结构

11. promise


    Promise 就像一个容器,里面存放着未来才会结束,返回结果的容器,返回的结果只需要在出口处

    接收就好了。从语法上讲,Promise 是一个对象,从它可以获取异步操作的消息。

    优点: 解决回调地狱,可以链式调用,使用更加灵活

    

    Promise 的状态 只有两种 ,且 一个 promise 对象只能 改变 一次

            resolve 成功后调用

            rejectd 失败后调用

    无论变成成功还是失败,都会且有一个结果数据

image.png

12. 构造函数 的注意事项


    1)构造函数的函数名 建议首字母大写 (为了和普通函数 做一个区分)

    2)构造函数将来在调用的时候,必须和 new 关键字 一起使用

    3)构造函数内部 不需要书写 return

        如果 手动返回了 基本数据类型,那么写了和 没写一样

        如果 手动返回了 引用数据类型,那么写了之后构造函数失效

    4)构造函数在使用的时候 内部 的 this 规则和 之前的 函数不太一样

       因为一个函数和 new 关键字                                          

13. 两个数组 和并 并删除第二个数据


        <script>

            let arr1 = [1,2,3,4,5]

            let arr2 = [3,4,5,6,7]

            let arrA = [...new Set([...arr1,...arr2])]

            arrA.splice(1,1)

            console.log(arrA)

        </script>

14. 同步异步,宏任务与微任务


    js是单线程的,所有的任务都要排队挨个执行,就好比做保健(执行js代码),

    保健师傅只有一个(单线程),顾客(js代码)需排队享受服务,

    排队的顺序按照顾客的种类(同步异步、宏任务微任务)和顾客到店顺序(在代码中的位置)执行

    

    同步与异步、宏任务和微任务分别是函数两个不同维度的描述。

    异步任务:setTimeoutsetInterval、ajax、事件绑定等

    同步任务:除了异步任务外的所有任务

    微任务:process.nextTickPromise后的theny语句和catch语句等

    宏任务:除了微任务以外的所有任务

 

image.png

15. 解决跨域


    1)  为什么会 出现 跨域

        同源策略  是 浏览器最基本的安全功能,如果缺少了 同源策略,浏览器很容易受到 XSSCSFR

                等攻击

         同源策略 指的是 协议 + 域名 + 端口 三者相同 只要有一个 不同 就会出现 跨域

    2) 跨域 会导致 什么 发生

        请求能够正常发送

        服务器也一定能够正常响应

        但是浏览器 会认为 当前的请求不安全,然后将本次请求 的 信息拦截掉

16. BFC 的相关事宜

 

17. 本地存储 的区别

 

18. 数据类型转换

 

19。 == 与 === 的区别

 

20。 同源策略 (跨域)

 

21. get 与 post 的 区别  

 

22. /^[a-z0-9]{6,8}$/i

 

23. jS 数据类型有哪些?

 

24. 判断数据类型的 所有方法

 

25. const a1 = { id: 'Qf001' }

        const a2 = a1

        a2.name = '张三'

        ? a1 中是否有?

        深浅拷贝

        

26. ajax post 发生请求

 

27. 修改 this 指向


    call()

    apply()

    bind()

28. 事件委托

 

29. 拖拽实现思路

 

30. 作用域, 变量提升, 作用域链, 暂时性死区

 

31. JS 影响性能


    1.闭包

        内存空间不被销毁,内存泄漏

    2.大批量的操作 DOM 节点

32. 创建对象的 方式

 

33.本地存储的方案 有什么区别

 

34.实现 本地存储

 

 

35.


    let t = 1

    function a(text) {

        let t = text++

    }

    

    a(t)

    console.log(t)

 

36. 原生JS 做过什么事情

 

37. JSON 数据类型的理解

 

38. jsonp 利用什么 原理

 

39. 字符串 翻转

 

40. 判断 数据 类型 方法