什么是闭包?有什么作用? 什么是跨域?如何解决跨域问题? 什么是原型链?如何理解它? 什么是事件代理?有什么优点? 什么是事件冒泡和捕获?如何阻止它们? 什么是虚拟DOM?和真实DOM有什么区别? 什么是CSS盒子模型?有哪些属性? 什么是CSS选择器?有哪些常用的选择器? 什么是CSS层叠顺序?如何计算它? 什么是CSS预处理器?有哪些常用的预处理器?
时间: 2023-08-10 13:02:21 浏览: 122
1. 什么是闭包?有什么作用?
闭包是指函数能够访问并操作其外部作用域中的变量,即使函数在外部作用域之外被调用。闭包的作用是可以让变量长期驻留在内存中,可以被多个函数共享访问,避免全局变量的污染,以及实现一些特殊的功能,如柯里化、缓存等。
2. 什么是跨域?如何解决跨域问题?
跨域是指浏览器不能直接访问其他域名下的资源。跨域问题可以通过以下方式解决:
- JSONP:利用script标签可以跨域的特点,将需要传递的数据作为参数拼接在URL中,服务器返回一段JavaScript代码,该代码会在客户端执行,从而实现跨域请求。
- CORS:在服务器端设置响应头,允许指定的域名访问该服务器的资源。
- 代理:通过在服务器端设置代理,将跨域请求转发到同源服务器上,然后再将结果返回给客户端。
3. 什么是原型链?如何理解它?
原型链是JavaScript中实现继承的一种机制。每个对象都有一个隐藏的内部属性[[Prototype]],指向它的原型对象。当访问一个对象的属性时,如果该对象本身没有该属性,就会沿着原型链向上查找,直到找到该属性或者查找到原型链的顶端null。
4. 什么是事件代理?有什么优点?
事件代理是指将事件处理程序添加到父元素上,利用事件冒泡机制,处理子元素上的事件。事件代理的优点是可以减少事件处理程序的数量,避免内存泄漏,提高性能和代码的可维护性。
5. 什么是事件冒泡和捕获?如何阻止它们?
事件冒泡是指事件从最具体的元素开始,逐级向父元素传播,直到传播到document对象。事件捕获是指事件从document对象开始,逐级向下传播,直到传播到最具体的元素。可以通过调用事件对象的stopPropagation方法来阻止事件冒泡或者捕获。
6. 什么是虚拟DOM?和真实DOM有什么区别?
虚拟DOM是指用JavaScript对象来描述DOM结构的一种技术。通过比较新旧两个虚拟DOM对象的差异,可以最小化DOM操作,从而提高性能。虚拟DOM和真实DOM的区别在于,虚拟DOM是在JavaScript内存中操作的,而真实DOM是在浏览器中操作的。
7. 什么是CSS盒子模型?有哪些属性?
CSS盒子模型是指将一个元素看做一个矩形盒子,由内容区、内边距、边框和外边距组成。CSS盒子模型的属性有:
- width:盒子的宽度,不包括内边距、边框和外边距。
- height:盒子的高度,不包括内边距、边框和外边距。
- padding:内边距,包括上、右、下、左四个方向。
- border:边框,包括宽度、样式、颜色三个属性。
- margin:外边距,包括上、右、下、左四个方向。
8. 什么是CSS选择器?有哪些常用的选择器?
CSS选择器是用来选择需要样式化的元素的方式。常用的CSS选择器有:
- 标签选择器:根据元素的标签名选择元素。
- 类选择器:根据元素的class属性选择元素。
- ID选择器:根据元素的id属性选择元素。
- 属性选择器:根据元素的属性选择元素。
- 伪类选择器:根据元素的状态选择元素,如:hover、:active等。
- 后代选择器:选择元素的后代元素。
- 子元素选择器:选择元素的直接子元素。
- 相邻兄弟选择器:选择元素的下一个兄弟元素。
9. 什么是CSS层叠顺序?如何计算它?
CSS层叠顺序是指元素在重叠的情况下,哪个元素应该显示在哪个元素的上面。CSS层叠顺序的计算方式是将所有元素分为以下几类,按照顺序比较:
- 背景和边框。
- 元素本身。
- 浮动元素。
- 非定位的块级元素。
- 定位的元素。
10. 什么是CSS预处理器?有哪些常用的预处理器?
CSS预处理器是指在CSS基础之上,增加了一些编程语言的特性,如变量、函数、嵌套等。常用的CSS预处理器有:
- Sass:基于Ruby开发的一种CSS预处理器。
- Less:一种CSS预处理器,使用JavaScript实现。
- Stylus:一种CSS预处理器,使用JavaScript实现。
- PostCSS:一种CSS处理工具,支持插件扩展。
阅读全文