网站首页 > 基础教程 正文
1、请解释一下 JavaScript和CSS阻塞。
JavaScript的阻塞特性是所有浏览器在下载 JavaScript代码的时候,会阻止其他一切活动,比如其他资源的下载,内容的呈现等,直到 JavaScript代码下载、解析、执行完毕后才开始继续并行下载其他资源并渲染内容。
为了提高用户体验,新一代浏览器都支持并行下载 JavaScript代码,但是 JavaScript代码的下载仍然会阻塞其他资源的下载(例如图片、CSS文件等)。
为了防止 JavaScript修改DOM树,浏览器需要重新构建DOM树,所以就会阻塞其他资源的下载和渲染。
嵌入的 JavaScript代码会阻塞所有内容的呈现,而外部 JavaScript代码只会阻塞其后内容的显示,两种方式都会阻塞其后资源的下载。也就是说,外部脚本不会阻塞外部脚本的加载,但会阻塞外部脚本的执行。
CSS本来是可以并行加载的,但是当CSS后面跟着嵌入的 JavaScript代码的时候,该CSS就会阻塞后面资源的下载。
而当把嵌入的 JavaScript代码放到CSS前面时,就不会出现阻塞的情况了(在IE6下CSS都会阻塞加载)。
根本原因是因为浏览器会维持HTML中CSS和 JavaScript代码的顺序,样式表必须在嵌入的 JavaScript代码执行前先加载、解析完。而嵌入的 JavaScript代码会阻塞后面的资源加载,所以就会出现CSS阻塞资源加载的情况。
2、阐述一下事件冒泡。
Java Script允许DOM元素嵌套在一起。在这种情况下,如果单击子级的处理程序,父级的处理程序也将执行同样的工作。
3、和DOM事件流的区别是什么?
区别如下。
(1)执行顺序不一样
(2)参数不一样。
(3)事件名称是否加on不一样。
(4)this指向问题不一样。
4、解释一下什么是构造函数?
构造函数是一种特殊的方法,主要用来创建对象时初始化对象,经常与new运算符一起使用,创建对象的语句中构造函数的名称必须与类名完全相同。
5、解释一下for-in循环。
for-in循环用于循环对象的属性。
for-in循环的语法如下。
for (var iable name in object){}
在每次循环中,来自对象的一个属性与变量名相关联,循环继续,直到对象的所有属性都被遍历。
6、两个嵌套for循环的执行顺序
外层判断循环条件,满足进入外层循环体
内层判断循环条件
内层循环体执行
内层循环变量累加,回到2执行,直到不满足内层条件
外层循环变量累加,回到1执行,直到不满足外层循环条件,彻底退出循环
7、如何理解 JavaScript中的闭包?
闭包就是能够读取其他函数内部变量的函数。
闭包的用途有两个,一是可以读取函数内部的变量,二是让这些变量的值始终保持在内存中。
8、解释一下 window. onload和 onDocumentReady。
在载入页面的所有信息之前,不运行 window. onload。这导致在执行任何代码之前会出现延迟。
window.onDocumentReady在加载DOM之后加载代码。这允许代码更早地执行(早于 window. onload)。
9、在 JavaScript中, unshift方法的作用是什么?
unshift方法就像在数组开头工作的push方法。该方法用于将一个或多个元素添加到数组的开头。
10、typeof是用来做什么的?
typeof是一个运算符,用于返回变量类型的字符串描述。
猜你喜欢
- 2024-10-17 「Js」js事件委托是什么?使用js事件委托的好处有哪些?
- 2024-10-17 HTML-JavaScript基础(非常详细) html javascript教程
- 2024-10-17 批处理自动生成图片自适应大小、以图片文件名为描述的图片网页
- 2024-10-17 Javascript 模块化指北 javascript的模块规范
- 2024-10-17 第51节 可编辑的内容-Javascript-零点程序员-王唯
- 2024-10-17 JavaScript-如何在js代码中引用一个js模块?
- 2024-10-17 前端里那些你不知道的事儿之 【window.onload】
- 2024-10-17 JavaScript 保留关键字 js的保留关键字不可以用作
- 2024-10-17 如何在JavaScript中运行.NET Core代码
- 2024-10-17 如何实现前端懒加载图像 前端懒加载及其实现方式
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)