以下是几道前端面试笔试题及参考答案: 1. 请简述盒模型,并说明 box-sizing 属性的作用。 盒模型分为标准盒模型和怪异盒模型,标准盒模型的宽度(width)和高度(height)只包括内容(content),而怪异盒模型的宽度(width)和高度(height)包括了内容(content)、内边距(padding)和边框(border)。 box-sizing 属性可以控制盒模型的类型,有两个值:content-box 和 border-box。默认值为 content-box,表示使用标准盒模型;而 border-box 表示使用怪异盒模型,即宽度(width)和高度(height)包括了内容、内边距和边框。 2. 请简述 CSS 中的 BEM 命名规范。 BEM 是一种 CSS 命名规范,全称为 Block Element Modifier。它的原理是将页面中的元素划分为块(Block)、元素(Element)和修饰符(Modifier)三个部分,并使用连字符(-)来连接它们的名称,从而形成类名。例如: ``` .block {} .block__element {} .block--modifier {} ``` 其中,block 表示块,element 表示元素,modifier 表示修饰符。块是页面上的独立部分,元素是块的组成部分,修饰符是用来改变块和元素的外观和行为的。 BEM 命名规范的优点是可读性好、易于维护和扩展、语义化明确,能够有效地减少样式冲突。 3. 请简述 JavaScript 中的闭包,并说明闭包的作用。 闭包是指函数与其相关的引用环境组合而成的实体。在 JavaScript 中,每次调用函数都会创建一个新的执行环境,当函数执行完毕后,该执行环境会被销毁。但是,如果函数返回了一个内部函数,并且该内部函数引用了外部函数的变量,则该内部函数就会形成一个闭包,保留了外部函数的执行环境,不会被销毁。 闭包的作用是可以访问外部函数中的变量和函数,并且可以将其保存下来,供以后使用。闭包通常用来实现模块化、封装变量、缓存数据等功能。但是,过多地使用闭包也会导致内存泄漏等问题,需要谨慎使用。 以上是几道前端面试笔试题及参考答案,希望对你有所帮助。