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()等方法

伪数组怎么转真数组

  • Array.form()
  • […] 展开运算符
  • 声明一个空数组,利用for循环遍历伪书组,添加到数组中

注册事件三要素

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

注意点:

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

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

  1. on + 事件名称

  2. addEventListener
    区别:

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

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

innerText和innerHTML的区别

区别:

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

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

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

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

  • 在函数内写return false(只针对on方式注册的事件管用
  • 使用事件对象 e.preventDefault()
  • 将href属性设为 javascript:;

深克隆和浅克隆的区别

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

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

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

  1. 事件的捕获阶段

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

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

  4. 时间的目标阶段

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

  6. 事件的冒泡阶段

  7. 当一个元素的事件被触发时,同类型事件将会在该元素中所有祖先元素由内而外依次被触发这已过程被称为事件冒泡(事件默认就时事件冒泡过程

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

如何阻止冒泡和默认行为

  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. 字符串中提取我们想要的部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pixel0216

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值