-
状态机通过定义状态、事件和转移规则来管理对象行为变化。在JavaScript中可用对象实现,如电灯开关有'off'和'on'状态,响应'push'事件切换;进一步可封装为工厂函数createStateMachine,支持初始化、转移和回调,用于订单流程等场景;还可扩展钩子函数onEnter/onExit,实现登录流程中的提示与副作用处理,提升可维护性与扩展性。
-
状态管理是前端应用中对数据存储、更新和分发的统一控制。1.它涵盖UI状态(如加载提示)、业务状态(如购物车)和服务器缓存状态。2.随着单页应用发展,组件间数据共享与视图同步成为挑战,需通过有效数据流提升可维护性和协作效率。3.小型项目可用组件内状态(如useState),大型项目倾向集中式管理。4.主流模式包括:单向数据流(如Redux),强调动作→状态→视图的可预测流程;响应式数据流(如Vuereactive、MobX),自动追踪依赖并更新;命令式方案(如Zustand、Jotai),API简洁适合轻量
-
figcaption必须嵌套在figure内才具语义和渲染效果,是figure的专属子元素,用于简洁、自包含地说明其内容;应置于figure首或尾(推荐结尾),仅限一个,需重置CSS以确保布局稳定,且不可替代img的alt属性。
-
::backdrop伪元素可自动为全屏元素或模态对话框创建样式化遮罩层,无需额外DOM。它能实现半透明模糊背景、自然动画效果,并避免z-index冲突,相比传统多节点遮罩更简洁高效。主流浏览器已支持,不兼容时可降级使用JavaScript方案。
-
HTML5无法直接加载CAD文件,需将CAD模型经STEP/IGES导出、网格处理、Blender转glTF/GLB后,用Three.js加载并按0.001缩放(mm→m)及坐标系对齐。
-
slot标签是WebComponents中用于内容分发的核心机制,它通过投影而非移动的方式将LightDOM内容分发到ShadowDOM指定位置。1.它不是把内容移入ShadowDOM,而是保留于LightDOM并通过slot作为分发点;2.默认插槽无name属性,捕获未匹配内容,且一个组件只能有一个;3.具名插槽通过name属性与外部内容的slot属性匹配实现精准分发;4.内容样式保留在LightDOM上下文中,默认不受ShadowDOM影响,但可通过::slotted()或CSS变量控制;5.事件冒泡
-
Object.is与===的核心区别在于NaN和±0的处理:Object.is认为NaN等于NaN、+0不等于-0,而===均相反;其余所有值的比较结果完全一致。
-
:empty选择器用于匹配不含任何内容(包括文本、子元素、空格)的元素,通过设置display:none可隐藏这些空元素,避免页面空白。例如div:empty{}能选中无内容的div并隐藏,适用于副标题、提示框等可选区块,提升布局整洁度。需注意空格或换行会使元素非空,且动态加载内容时应确保正确显示。
-
要在网页中正确显示下划线符号“\_”,可采用四种方法:一、用HTML实体_或_编码;二、用CSStext-decoration属性控制样式;三、用语义化<u>标签并配合text-underline-offset;四、用border-bottom替代实现精确控制。
-
尾调用优化(TCO)在JavaScript规范中存在但支持有限:仅Safari的JavaScriptCore在严格模式下完全实现,V8和SpiderMonkey已放弃支持;尾调用指函数最后动作是调用另一函数且其返回值直接作为当前函数返回值。
-
实现HTML响应式网站需五步:一、语义化HTML结构与视口设置;二、流体网格与相对单位布局;三、移动优先的媒体查询;四、响应式图像处理;五、Flexbox与Grid布局结合。
-
Symbol.iterator是JavaScript中定义对象遍历行为的特殊属性,使对象可被for...of、扩展运算符等使用;2.它通过实现返回迭代器对象的方法,提供next()以逐步返回{value,done}结构,从而支持迭代协议。
-
CSScolor属性用于设置文本颜色,可通过颜色名称(如red)、十六进制(如#ff0000)、RGB/RGBA(如rgb(255,0,0))、HSL/HSLA(如hsl(0,100%,50%))等方式定义,适用于不同场景需求。
-
JavaScript模板引擎核心是解析、编译、渲染三步,基础用with+newFunction,进阶用词法分析+AST,需沙箱隔离与安全语法设计。
-
斗鱼直播卡顿、耗电高问题可通过切换至HTML5播放器解决:网页端右键启用或执行代码强制开启;PC客户端设置渲染方式为WebGL并勾选优先HTML5解码;APP端关闭硬解码、设蓝光清晰度并双指缩放触发;浏览器可借助扩展屏蔽Flash并验证.m3u8/.mp4流。