-
移动端:hover点击后不消失是浏览器悬停状态延迟清除机制所致;iOSSafari等将首次触摸视为:hover起点但无对应“离开”事件,需通过ontouchstart属性或JS主动清除。
-
str.at(-1)可优雅安全获取字符串末字符,支持负索引、空串返回undefined,语义清晰且比str[str.length-1]和str.slice(-1)更简洁可靠,现代浏览器及Node.js16.6+均已支持。
-
::first-letter的font-size无效主因是元素非块级上下文,需确保父元素为block或inline-block;浮动首字需配line-height和margin-right;中英文混排受Unicode属性影响,中文最稳定;调试应检查首字是否真为文本流首个字符。
-
WeakRef仅适用于JS对象的弱引用,避免阻止GC回收;不能用于离线资源缓存,因其不支持持久化、无TTL、不触发清理、无法跨页面/ServiceWorker存活,也不兼容CacheAPI或IndexedDB。
-
text-orientation仅在writing-mode为vertical-rl或vertical-lr时生效;mixed使CJK直立、ASCII旋转90°,适合现代中文竖排;upright使所有字符直立,易致英文不可读;sideways已废弃。
-
<main>标签是文档中唯一代表核心内容的语义化容器,必须且只能出现一次,不可嵌套于<article>等元素内,错误使用会损害可访问性与SEO。
-
JavaScript通过原型链实现继承,对象的[[Prototype]]指向原型,共享属性方法。函数的prototype用于构造实例,子类可通过Object.create()继承父类原型,结合构造函数借用实现组合继承。ES6引入class和extends语法,使继承更直观,但底层仍基于原型链。掌握原型链是理解JS面向对象的核心。
-
SVG是基于XML的矢量图形格式,可内联于HTML中,通过viewBox定义逻辑坐标、width/height控制显示尺寸;JavaScript可用createElementNS(指定命名空间)创建图形元素并操作属性、事件与动画,path元素通过d属性实现复杂路径绘制。
-
用CSSGrid+class切换实现列表/网格视图互切,核心是grid-template-columns:repeat(auto-fit,minmax(280px,1fr))配合预设.layout-grid/.layout-list类,JS仅切换class、不操作内联样式,确保响应式与可维护性。
-
通过设置flex-direction:column、flex-wrap:wrap和align-content,可实现Flexbox容器内子元素按列多行排列并控制列间对齐方式。
-
V8不做传统逃逸分析,所有JS对象默认堆分配;闭包变量进堆是因语言模型决定,而非“逃逸”,其性能代价在于内存局部性差、缓存命中率低及易晋升老生代。
-
DeclarativeShadowDOM是什么,为什么服务端渲染需要它传统attachShadow()只能在客户端JS中调用,服务端(如Node.js、SSR框架)无法执行JS,因此无法生成ShadowRoot。DeclarativeShadowDOM提供了纯HTML方式声明ShadowRoot,让服务端能直接输出带作用域样式的结构——关键在于用或元素,浏览器解析时会自动将其内容提升为ShadowRoot。服务端如何输出合法的Declarative
-
Memoization的核心是用空间换时间,通过缓存纯函数的计算结果提升性能;关键在于为数组输入生成稳定可哈希的键(如JSON.stringify),并注意适用场景与限制。
-
原生CSS+少量JS可实现可靠轻量页面滑动:overflow-x+flex适用于手动滚动场景,需设flex布局、隐藏滚动条;transform+transition适合全屏切换,需transition写在容器上并用transitionend清理;移动端手势须touchstart立即preventDefault、判断位移防误触、touchend惯性补位,并注意passive:false和事件卸载。
-
需用appearance:none及各浏览器伪元素(如::-webkit-slider-thumb)定制样式,进度填充须JS计算百分比并动态更新覆盖层宽度,移动端需加touch-action:manipulation防跳动,accent-color仅快捷设置thumb主色且有兼容限制。