前端面试题JavaScript(二)(前端面试题js基础)

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是一个运算符,用于返回变量类型的字符串描述。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注