-
Spread语法可合并数组但有局限:仅浅拷贝、不支持类数组直接展开、大数组内存开销大;concat()更兼容且性能优;超大数组宜用循环push;去重或深度合并需额外逻辑。
-
使用Flexbox实现两栏居中对齐最有效,1.整体居中:父容器设display:flex,justify-content:center实现水平居中,align-items:center实现垂直居中;2.仅水平居中:使用justify-content:center配合gap设置间距,flex:0045%控制列宽;3.响应式堆叠:屏幕小于768px时,flex-direction:column使两栏垂直排列,align-items:center保持居中,width:80%和text-align:center适
-
JavaScript函数默认参数语法为param=defaultValue,ES6原生支持,仅当参数为undefined时触发,默认值表达式每次调用重新求值,可访问前序参数及外层变量,但不可反向引用或访问函数体内let/const声明。
-
for循环在大多数场景下比forEach快2–5倍,尤其数组长度超1000时更明显;因forEach每次迭代创建新函数作用域、隐式调用回调且无法用break中断,而for是原生指令级控制。
-
本文详解为何直接对<spanid="hint-ru">添加blur-filter-off类无效,并提供基于CSS层级选择器(>*)与DOM结构优化的可靠解决方案,确保仅目标文本解除模糊,其余内容保持.blur-filter-on效果。
-
:hover作用于父元素可样式化子元素,如.parent:hover.child;CSS无法反向选中父级,需调整结构或用JS;:hover为瞬态伪类,不支持悬停后保持状态,移动端慎用。
-
Flex布局对齐需先确认主轴方向:flex-direction决定主轴(row为水平,column为垂直),justify-content控制主轴对齐,align-items控制交叉轴对齐;主轴变化时二者作用方向同步改变。
-
transition-timing-function用于控制CSS过渡的速度曲线,不改变时长但影响快慢节奏。常用关键词包括ease(默认,先慢后快再慢)、linear(匀速)、ease-in(加速)、ease-out(减速)、ease-in-out(两端慢中间快)。还可使用cubic-bezier(x1,y1,x2,y2)自定义贝塞尔曲线实现弹性效果,如cubic-bezier(0.175,0.885,0.32,1.275)用于按钮缩放。此外,steps(n)可实现分步动画,如steps(8)用于精灵图帧
-
Object.seal禁止增删属性但可修改值,Object.freeze则完全锁定对象;两者均为浅冻结,嵌套对象需递归处理。
-
JavaScript表单验证需用addEventListener('submit')绑定form元素并调用preventDefault(),配合trim()、正则校验、insertAdjacentHTML插入精准错误提示,提交后须清除错误状态和监听器。
-
本文教你如何通过JavaScript为HTML5<audio>元素设置默认及上限音量,解决音量过大问题——关键在于同步设置audio.volume和音量滑块的初始值,并在setVolume()中添加安全约束。
-
深拷贝需递归复制所有层级并处理循环引用,JSON.parse(JSON.stringify())有类型限制,手写应使用WeakMap缓存,生产环境推荐Lodash的_.cloneDeep()。
-
JavaScript操作剪贴板主要使用异步的navigator.clipboardAPI,需在HTTPS/localhost安全上下文及用户手势(如click)中调用writeText()或readText(),旧版浏览器可降级使用document.execCommand('copy')。
-
最常见的play()报错是DOMException:Theelementhasnosupportedsources,因未加载有效音视频资源就调用;其次为Promise拒绝,因缺少用户手势触发;还有安卓WebView静默失败及WebAudio混用导致的音频异常。
-
答案:CSS中通过margin控制元素外间距,padding控制内间距,flex布局可用gap设置子元素间隔,并推荐使用box-sizing:border-box避免尺寸异常。