1.JS和DOM执行机制的问题,在浏览器上面的执行:
2.window.onload()执行条件:window上的load 事件会在整个页面(包括所有外部资源如图片、 JavaScript 文件和 CSS 文件)加载完成后触发。img元素身上也有load事件。所以window.onload事件会在执行完script标签里面的内容之后再调用。可以操作dom。
3.事件委托(改善页面性能)——捕获阶段:在 DOM 事件流中,实际的目标(
下一阶段,即会在
在 JavaScript 中,页面中事件处理程序的数量与页面整体性能直接相关。原因有很多。首先,每个函数都是对象,都占用内存空间,对象越多,性能越差。
其次,为指定事件处理程序所需访问 DOM 的次数会先期造成整个页面交互的延迟。只要在使用事件处理程序时多注意一些方法,就可以改善页面性能。
- 利用事件委托,减少操作DOM的次数和编写事件回调函数的次数。
- 捕获阶段也可以实现事件委托,因为捕获阶段也可以拿到事件目标,也可以相应触发在目标上面的事件。并且都会命中事件目标再次触发绑定在事件目标上面的事件函数。
- 事件都会跑遍整个捕获、目标、冒泡阶段,但是看你把函数绑定在哪个阶段。
4.字符串反转(一句话实现:先split(“”)分割为字符串数组 再reverse反转数组 再join(“”)连接字符串数组) 。
一般字符串的操作不会改变自身。
数组的操作会改变自身。
字符串和数组的splice、slice、split。
数组:
splice(拼接):通过索引删除某个元素。(第一个参数是删除位置,第二个参数是删除个数),还可以第三个元素是增添新的元素。会改变原始数组
slice(截取):截取数组中的部分值,返回它们,不会改变原始数组。参数是开始截取位置和停止截取位置。
join:拼接为字符串。
字符串(字符串字面量 (通过单引号或双引号定义) 和 直接调用 String 方法(没有通过 new 生成字符串对象实例)的字符串都是基本字符串。JavaScript会自动将基本字符串转换为字符串对象,只有将基本字符串转化为字符串对象之后才可以使用字符串对象的方法。当基本字符串需要调用一个字符串对象才有的方法或者查询值的时候(基本字符串是没有这些方法的),JavaScript 会自动将基本字符串转化为字符串对象并且调用相应的方法或者执行查询。):其他值转换为String类型最好使用String()方法。其对null等特殊对象做了特殊处理。
split(分割):分割为字符串数组,不会改变原字符串。
slice(截取):提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。截取数组中的部分值,返回它们,不会改变原始数组。参数是开始截取位置和停止截取位置。
5.线程死锁:
A线程去请求已经被锁上的B线程,B线程同时也去请求被锁上的A线程。
6.vue怎么实现computed:
7.script用src引入外部js文件就不会再执行里面的js语句了,需要重新引入一个script执行js语句。
8.mjs也就是模块文件里面才可以使用export和import模块化语句。