-
事件捕获是事件流的第一阶段,从window向目标元素逐层下行,需显式启用capture:true;它与冒泡方向相反、时机在前,适用于全局预处理,而事件委托依赖冒泡因其天然支持子元素事件向父元素传递。
-
函数式编程在JavaScript中强调纯函数、不可变数据和高阶函数,而非彻底抛弃命令式;核心是将函数作为一等公民,通过map/filter/reduce等实现可预测、易组合、低副作用的逻辑。
-
Proxy用于创建对象的代理以拦截和自定义操作,Reflect提供调用默认行为的统一API,二者结合可实现属性读写拦截、数据校验与响应式系统,如通过get/set捕获器记录日志或验证赋值,其中Reflect确保原始操作的正确执行。
-
用max-width:100%配合height:auto可使图片随容器缩放且保持宽高比;它设宽度上限而不强制拉伸,比width:100%更安全,适用于所有img标签,但需父容器有明确宽度。
-
WebWorkers是浏览器提供的后台线程机制,使JavaScript脱离主线程执行以避免阻塞渲染和交互;其运行于隔离线程,无DOM访问权限,通过postMessage异步通信,适用于大数组排序、图像处理等耗时任务。
-
Grid布局中行高不一致主因是内容高度差异、默认对齐及grid-auto-rows设置不当;grid-auto-rows仅作用于隐式行,显式行需用grid-template-rows统一;align-content控制多行整体分布而非单行高度,配合align-items:center和minmax()可实现视觉等高。
-
HTML文件双击以file://协议打开时hover可能不生效,主因是本地协议限制、样式未加载或写法错误;应改用本地服务器(如LiveServer)、检查开发者工具中hover计算样式、确认选择器语法及pointer-events设置,并注意移动端hover不可靠。
-
答案:防止表单重复提交常用方法包括前端禁用按钮、一次性令牌、Post-Redirect-Get模式和前端防抖。1.提交后禁用按钮可防止多次点击;2.服务器生成唯一token并校验,确保请求唯一性;3.PRG模式通过重定向避免刷新重复提交;4.前端防抖控制限制短时间内多次提交。推荐组合使用前端按钮禁用、后端token验证与PRG模式,以兼顾安全与体验。
-
JavaScript有7种原始数据类型(string、number、boolean、null、undefined、symbol、bigint)和1种引用类型(object),共8类;原始类型按值存储,引用类型按引用存储。
-
setTimeout和setInterval不能精确倒计时,因其仅保证“至少”等待指定时间;应以Date.now()或服务端时间戳为基准动态计算剩余时间,避免累加误差。
-
JavaScript数组懒加载的核心是按需分批加载数据,而非一次性加载全部;2.实现方式包括初始化少量数据、监听滚动或点击事件触发加载、请求并追加数据、维护加载状态;3.常见策略有滚动到底部自动加载(推荐结合节流或IntersectionObserver)、点击按钮加载更多、以及用于超大数据集的虚拟列表技术;4.面临的挑战包括正确管理加载状态(如页码和hasMore标志)、防止重复请求(使用isLoading锁)、处理网络错误并提供用户反馈、兼顾SEO影响(可通过SSR或预渲染解决)以及优化DOM渲染性能
-
JavaScript实现SPA路由的核心是不刷新页面而动态替换内容并同步更新地址栏和导航行为,需监听hashchange/popstate事件、定义路由表、用HistoryAPI导航,并配置服务端fallback;框架如ReactRouter、VueRouter提供嵌套路由、懒加载等高级功能;还需考虑状态保持与SEO优化。
-
body顶部空白是移动端浏览器(如Safari、ChromeforiOS)默认为body设置margin及viewport缩放、font-size继承等共同导致;需显式重置html/body的margin/padding/height,并配置viewport禁用缩放。
-
持续集成与部署(CI/CD)通过自动化测试、构建和部署提升JavaScript项目交付效率。1.CI指频繁合并代码并自动运行测试以快速发现错误;2.CD在CI通过后自动将应用部署至生产环境;3.常用工具包括GitHubActions、GitLabCI/CD、CircleCI和Jenkins,其中GitHubActions因易用性成为多数项目的首选;4.典型CI流程包含安装依赖、代码检查、执行测试和构建项目;5.部署阶段可结合Vercel、Netlify或云服务实现自动化发布,敏感信息需存储于仓库Secre
-
JavaScript中栈和队列是基于数组等原生语法实现的LIFO和FIFO线性结构;栈用push/pop实现O(1)操作,队列优选索引偏移法避免shift的O(n)开销,二者广泛应用于DFS/BFS、事件循环等场景。