-
JavaScript在浏览器中是单线程的,通过事件循环机制实现异步非阻塞操作。主线程负责执行JS代码、渲染页面和处理用户交互,为避免DOM操作冲突,一次只能执行一个任务。耗时操作由浏览器的WebAPIs处理,完成后将回调放入任务队列。事件循环在执行栈空闲时,优先执行微任务队列中的任务(如Promise回调),再执行宏任务队列中的任务(如setTimeout)。这种机制使异步代码看似并行执行,实则单线程调度。为解决长时间计算阻塞UI的问题,浏览器引入WebWorkers,允许在独立线程中运行脚本,但Work
-
通过CSS的cursor属性可设置光标样式,支持内置类型如pointer、text及自定义图片;语法为cursor:url('path')xy,fallback;,需注意格式兼容性与热点坐标设置。
-
现代浏览器禁止有声视频自动播放是策略而非bug,Chrome≥66、Safari≥11、Edge≥79默认拦截未静音的autoplay;唯一可靠方案是同时声明autoplay和muted属性(muted须为HTML属性),并添加playsinline与webkit-playsinline以确保内联播放;有声播放必须等待用户首次有效交互后手动取消静音并调用play()。
-
按钮禁用态应使用rgba降低原色不透明度(0.4–0.5),而非固定灰色,以保持色相识别、品牌一致性和无障碍可访问性;需同步调整文字色、边框色并移除悬停/焦点样式。
-
pushState在历史栈新增记录,replaceState直接替换当前记录;两者参数均为(state,title,url),其中state为可序列化数据,title被忽略,url须同源;仅浏览器导航触发popstate事件,需手动监听并初始化渲染。
-
WebCryptoAPI可在浏览器中实现安全加密,支持AES-GCM等算法,通过generateKey生成密钥,encrypt和decrypt进行加解密,需使用随机IV并避免硬编码密钥,确保运行在HTTPS或localhost环境,推荐结合JWK格式导出与安全存储机制保障数据安全。
-
$.map()用于遍历数组并转换数据,如将[1,2,3,4,5]翻倍为[2,4,6,8,10],支持过滤大于2的数并平方得[9,16],与原生map不同的是会自动排除undefined值,返回新数组而非jQuery对象。
-
最推荐清除浮动的方案是伪元素法(clearfix),配合display:flow-root等现代BFC触发方式;伪元素法结构干净、兼容性好,而flow-root语义清晰、无副作用,Flex/Grid则可根本规避浮动问题。
-
适合,而且非常高效。CSS工具与框架能大幅缩短原型阶段样式开发时间,原子化工具如Tailwind支持JIT编译与内联控制,轻量框架如Bulma兼顾结构与可控性,慎用Bootstrap等全功能框架以免干扰交互意图,选型关键在于“多好删”。
-
localStorage默认持久化,但需避免无痕模式、跨协议访问、未序列化对象、重复覆盖等误用;存取对象须用JSON.stringify/parse并try-catch;storage事件不触发当前页;容量受限且因编码差异实际可用空间不同。
-
JavaScript内存泄漏指本该回收的内存因意外引用无法释放,导致页面卡顿甚至崩溃;典型场景包括未清理事件监听器、未清除定时器、意外全局变量、DOM引用残留及闭包持有大对象。
-
要实现CSS层叠效果需先设置定位属性,再通过z-index控制层级。1.z-index仅对position为relative、absolute、fixed或sticky的元素生效;2.数值越大层级越高,同级元素中z-index大者覆盖小者;3.层叠上下文会影响层级关系,父元素创建上下文后子元素层级受限于父级;4.实际应用中应合理规划z-index值,如基础内容用0或负数,导航设10~50,模态框用100以上,避免滥用极大值导致维护困难。
-
z-index不生效主因是元素未参与层叠上下文:需确保position为relative/absolute/fixed/sticky,且父容器未意外创建新层叠上下文(如含transform、opacity等),同一上下文中z-index才按数值大小决定覆盖顺序。
-
应明确指定transition-property,只对需过渡的属性启用动画,避免使用all或省略property;推荐写法如transition:color0.2s,background-color0.2s,transform0.3s;简写时须按propertydurationtiming-functiondelay顺序并显式声明property。
-
执行上下文是代码运行环境,分全局、函数和eval三种,创建时先设变量对象、作用域链和this,再执行代码;作用域链决定变量查找路径,由词法作用域确定,函数定义时即固定;变量提升使var声明前置但初始化为undefined,let/const存在暂时性死区;闭包通过作用域链保留对外部变量的引用,实现数据持久化。