• JavaScript面试常见问题(二)


    JavaScript是由哪几部分组成的

    • ECMAScript:JavaScript基础语法
    • Web API
    • DOM 文档对象模型 一套操作页面元素的方法
    • BOM 浏览器对象模型 一套操作浏览器元素的方法

    DOM中常见的概念:

    • 文档 document:一个网页可以称为文档
    • 节点 node:网页中的所有内容都是节点(标签、文本、注释等)
    • 元素 element:网页中的标签(标签节点)

    打印对象时console.log 和conlose.dir的区别

    • console.log:如果打印的是一个元素的时候,是以标签的形式进行展示的
    • console.dir:如果打印的是一个元素的时候,是以对象的形式进行展示的

    伪数组和真数组的区别

    数组不仅有长度、索引、还有一些内置的push()、pop()、join()等方法

    伪数组只有长度、索引 没有内置的push()、pop()、join()等方法

    注册事件三要素

    • 事件源: 触发事件的那个元素(比如:按钮、盒子)
    • 事件名: 事件的名字(比如:点击、移入…)
    • **事件处理程序:**触发事件之后要执行的代码(比如:一般就是一个函数)

    注意点:

    • 事件处理程序并不是立马执行,只有当事件被触发时,才会在会执行

    注册事件的方式有哪些?区别是什么

    1. on + 事件名称

    2. addEventListener
      区别:

    3. 使用on注册事件,同一个元素只能注册一个同类型事件,否则会覆盖。

    4. addEventListener可以注册同一事件多次,不会被覆盖。

    innerText和innerHTML的区别

    区别:

    • innerText属性:
    • 只能获取文本——》如果有标签会忽略
    • 只能设置文本——》当设置的是标签时,标签不能被解析,标签不能生效
    • innerHTML属性:
    • 可以获取文本和标签
    • 可以设置文本和标签——》当设置的是标签,标签可以被解析,标签可以生效

    事件处理函数中的this指向的是谁

    就表示当前触发的元素(事件源)

    阻止a标签跳转的方法有哪些

    • 在函数内写return false
    • 使用事件对象 e.preventDefault()
    • 将href属性设为 javascript:;

    深克隆和浅克隆的区别

    浅克隆:只克隆当前标签 里边的内容不会克隆

    深克隆:不仅克隆当前标签 里边的内容也会克隆

    事件的三个阶段分别是什么

    1. 事件的捕获阶段

    2. 当一个元素的事件被触发时,同类型事件将会在该元素中所有祖先元素由外而内依次被触发这已过程被称为事件捕获(可以通过addEventListener的第三个参数设置为true,表示当前事件在捕获阶段触发 )

    3. (如果需要事件捕获则在监听事件中事件处理函数后加上true)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRH4L1PH-1656583906979)(webAPIs.assets/image-20200929115205520.png)]

    4. 时间的目标阶段

    5. 触发自己的事件 (比如点击 输入等)

    6. 事件的冒泡阶段

    7. 当一个元素的事件被触发时,同类型事件将会在该元素中所有祖先元素由内而外依次被触发这已过程被称为事件冒泡(事件默认就时事件冒泡过程)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2oUH7fw9-1656583906981)(webAPIs.assets\image-20200929113205826.png)]

    整体流程 先执行事件的捕获阶段 再执行事件冒泡阶段

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U63aPhIL-1656583906981)(webAPIs.assets/image-20200929120323898.png)]

    如何阻止冒泡和默认行为

    1. 阻止冒泡和捕获 e.stopPropagation()

    2. 阻止默认行为 e.preventDefault() return false

    3. 注意:addEventListener注册的事件,在高浏览器版本中,return false将没有效果,必须要用事件对象

    js的运行机制是什么

    js是单线程执行的,页面加载时,会自上而下执行主线程上的同步任务,当主线程代码执行完毕时,才开始执行在任务队列中的异步任务。

    什么是异步和同步

    • 同步:指的是js在运行是任务是一个一个来的,前一个任务结束,才会执行后边的任务
    • 异步:通常指的是js中的注册事件、定时器、延时器、Ajax等 做第一件事情同时,还可以做其他事情。异步任务通常会添加到任务队列,达到其条件才会触发

    js的执行顺序

    1. 同步任务由JS的主线程依次执行
    2. 异步任务委托给浏览器执行
    3. 浏览器会将已完成条件的异步任务代码,加入任务队列等待执行
    4. 一旦主线程中的同步任务执行完毕后,系统就会按顺序读取任务队列中的异步任务,让异步任务进入主线程,开始执行。

    计时器和延时器的区别

    • 计时器(setiInterval())可以设置浏览器每隔多少秒执行一次,只要不停止计时器,可以一直执行下去
    • 延时器(setTimeout())只可以执行一次,页面重新加载时才会重新触发延时器

    正则表达式的作用

    1. 表单校验中的校验规则功能
    2. 过滤敏感词的替换功能
    3. 字符串中提取我们想要的部分
  • 相关阅读:
    【Try to Hack】vulhub靶场搭建
    js复制文本到剪切板
    创建数字藏品艺术平台需要多少成本
    NetSuite Account Register报表详解
    【Java 集合】准备知识
    51万奖池邀你参战——第二届阿里云ECS CloudBuild开发者大赛来袭
    git提交代码冲突
    c++异步框架workflow分析
    Using lxd to do vlan test (by quqi99)
    JUnit 5 单元测试教程
  • 原文地址:https://blog.csdn.net/weixin_43797577/article/details/125545888