-
Symbol.iterator用于同步遍历,需返回具有next方法的迭代器对象,支持for...of循环;Symbol.asyncIterator用于异步遍历,返回Promise形式的{value,done}结果,支持forawait...of循环。
-
令牌桶限流必须阻塞等待而非立即返回Promise,核心是维护等待队列、原子获取令牌、独立定时补桶(固定增量、全局唯一可清理)、透传原函数Promise状态,并按key隔离桶实例且带TTL清理。
-
overflow属性影响内容溢出时的显示与裁剪,尤其在定位元素中决定子元素是否被截断。其取值visible、hidden、scroll、auto分别控制溢出行为;当祖先元素overflow为hidden时,绝对定位子元素会遭裁剪,常导致下拉菜单或弹窗显示异常;设置overflow为hidden或auto可创建BFC,防止margin折叠并包含浮动;实际开发中应避免根元素设为hidden以防fixed元素被裁剪,优先使用auto以提升体验,并注意组件层级与兼容性问题。
-
直接caches.match(event.request)会出问题,因其不区分请求类型,导致POST、带credentials的登录请求及API响应被错误匹配缓存;应按event.request.destination分流处理:document需兜底,script/style可缓存,json/empty等必须直连网络。
-
Map支持任意类型键(对象、函数、Symbol等),而Object仅支持字符串和Symbol;Map用SameValueZero算法判断键相等,0与-0、NaN与NaN均视为相等,引用类型需同一实例才能匹配。
-
clip()必须先定义路径再调用才生效,否则裁剪区域为空;多次clip取交集,重置需save/restore;drawImage受目标区域裁剪影响;clearRect也受其限制。
-
推荐使用DartSass是因为Node-Sass已停止更新,不支持CSS新语法如calc()中的/、color-mix()、@container等,而DartSass同步CSS标准演进,是唯一能正确解析和兼容现代CSS特性的实现。
-
HTML的time元素不解析毫秒级时间戳,datetime属性仅接受ISO8601格式(如"2024-05-30T00:00:00Z"),需用newDate(timestamp).toISOString()手动转换,否则语义失效、辅助技术无法识别。
-
Reflect.apply本身不提供错误边界,必须手动包裹try/catch;它仅是Function.prototype.apply的反射式替代,不改变异常传播机制,需显式处理同步/异步错误、参数校验及上下文防御。
-
Tecno手机无HTML5私有API,适配关键是解决其老旧Android系统WebView兼容性问题;需检测UA确认内核版本,强制viewport完整声明,降级新CSS/JS特性,并用多真机交叉验证。
-
初学者应首选Phaser引擎入门JavaScript游戏开发,因其专为2D设计、开箱即用、文档清晰;其次可选PixiJS(高性能渲染)、Three.js(轻量3D)或Babylon.js(完整3D);亦可从原生Canvas+requestAnimationFrame手写游戏循环起步。
-
HTML5中隐藏表单元素有五种方式:一、type="hidden"提交但不显示;二、CSSdisplay:none隐藏但仍提交;三、hidden属性语义隐藏且默认仍提交;四、disabled配合CSS彻底隐藏且不提交;五、aria-hidden="true"仅屏蔽屏幕阅读器。
-
100vw导致水平溢出是因为它按视口总宽度(含滚动条占位)计算,而Windows等系统滚动条宽度不固定,造成“自己撑出滚动条”的循环;应使用document.documentElement.clientWidth动态获取真实可用宽度。
-
类私有方法是保护内部复杂业务状态更新逻辑最直接有效的手段,通过封装校验、转换、依赖协调等环节,明确职责边界、阻止非法调用、配合私有属性构建防护闭环,并为重构提供安全空间。
-
答案:实现JavaScript语义分析需基于AST解析、作用域管理与类型推断,通过@babel/parser生成AST,结合estraverse遍历,利用eslint-scope分析变量作用域,并构建符号表进行类型推断,最终定义规则检测未声明变量、类型不匹配等逻辑错误,实现深层代码检查。