-
filter方法返回符合条件的新数组且不修改原数组,但回调函数必须明确返回布尔值;漏写return或返回假值会导致误过滤;对象筛选需谨慎判断属性存在性与有效性;大数据量时应优先使用find而非filter。
-
核心区别在于是否新增历史记录条目:pushState()添加新记录,replaceState()替换当前记录;参数相同且同源限制,需注意state大小、popstate兼容初始化、服务端fallback及视图同步。
-
JavaScript浮点数计算不精确是IEEE754标准导致的共性问题,0.1+0.2结果为0.30000000000000004而非0.3;应使用误差容忍法(如Number.EPSILON或自定义容差)替代===比较。
-
图片轮播关键在稳定性:需用变量保存setInterval返回值并配对clearInterval,维护currentIndex单一状态源,用setTimeout递归替代setInterval以避免动画撕裂,组件卸载时必须清除定时器防止内存泄漏。
-
flex-shrink:0并非绝对阻止压缩,需配合flex-basis、white-space和min-width等属性协同控制;推荐使用flex:00auto明确禁用伸缩并以内容宽度为基准。
-
JavaScript变量是存储数据的容器,由名字、值和作用域构成;推荐用let(块级、可重赋值)和const(块级、需初始化、不可重赋值但对象属性可变),避免var(函数作用域、变量提升)。
-
引入CSS框架后表格样式冲突的解决方法有四种:一是用更具体的选择器提升特异性;二是谨慎使用!important;三是通过唯一class隔离作用域;四是检查并覆盖框架的reset/base样式。
-
必须掌握操作HTML元素的五种核心方法:一、通过ID精准获取并修改单个元素;二、通过类名批量操作多个元素;三、用querySelector系列灵活选择任意CSS匹配元素;四、动态创建并插入新元素;五、安全移除或替换现有元素。
-
<p>列宽不一致的根源是flex-grow/shrink干预及内容差异;应设flex:00calc(25%-8px)锁定基准、禁用伸缩,并配合gap、min/max-width与CSS变量实现响应式等宽布局。</p>
-
JavaScript事件循环严格遵循“宏任务→清空全部微任务→下一宏任务”节奏:先执行一个宏任务,再连续执行所有微任务直至队列为空,最后浏览器可能渲染并取下一个宏任务。
-
优化移动端CSS引入需减少HTTP请求、内联关键CSS、设置缓存、按需加载。合并文件、异步加载非关键CSS、压缩代码并避免冗余框架,结合Lighthouse与DevTools监控FCP、LCP等指标,持续优化性能。
-
柯里化是将多元函数转换为一系列单参数函数的技术,核心是分步传参、闭包保存已传参数,最终触发执行;如curry(add)(1)(2)(3)返回6,适用于预设配置、事件处理器复用等场景。
-
JavaScript需要BigInt来解决Number类型在处理超过2^53-1的大整数时的精度丢失问题,它允许安全操作任意大的整数,适用于大ID、加密密钥等场景。BigInt与Number类型不能直接混合运算,必须显式转换,且BigInt不支持Math方法和JSON序列化,需通过toString()转为字符串处理。实际使用中应通过n后缀创建BigInt,与API交互时前后端需以字符串形式传递大整数,并在必要时统一封装转换逻辑,避免精度错误。
-
使用transform和animation可实现高性能平滑平移动画。1.translate()位移不触发重排,优于left/margin;2.@keyframes定义动画关键帧,支持from/to或百分比;3.animation属性绑定动画,设置时长、缓动、循环等;4.示例中alternate实现往返移动。推荐用于按钮、加载、轮播等场景。
-
Prettier是提升JavaScript代码可读性和团队协作效率的主流格式化工具,支持多种语言,能自动处理空格、换行、引号等格式问题。通过npm或yarn在项目中本地安装可避免版本不一致问题。支持配置文件如.prettierrc或prettier.config.js来自定义规则,常用配置包括semi、singleQuote、trailingComma、printWidth和tabWidth。集成到VSCode等编辑器后可实现保存时自动格式化。若项目使用ESLint,需安装eslint-config-pr