-
JavaScript是一种运行在网页浏览器中的脚本语言,能让网页“动起来”——比如点击按钮弹出提示、实时验证表单、切换图片轮播、加载新内容而不刷新页面。它和HTML(页面结构)、CSS(页面样式)并列为前端开发的三大基础技术。JavaScript能做什么它不只是做动画或弹窗。现代JavaScript可以:操作网页内容:动态修改文字、图片、按钮,甚至整个区块响应用户行为:监听点击、输入、滚动、键盘按键等事件与服务器通信:通过fetch或axios获取数据(如天气、
-
text-align用于控制块级元素内行内内容的水平对齐方式,不控制元素自身位置;取值包括left(默认)、right、center、justify;具有继承性,但对块级子元素无效;需注意direction和writing-mode对其含义的影响。
-
JavaScript中querySelector支持CSS类选择器:单类用“.class”;多类交集连写如“.a.b”;可与标签、属性、伪类组合;注意“.a.b”是同元素多类,“.a.b”是后代关系。
-
onCleanup必须在watchEffect副作用函数内部同步调用,接收一个清理函数,Vue会在副作用重新执行或组件卸载前自动触发它,从而解决接口竞态问题。
-
GitLab的MergeRequest页面是服务端动态渲染的Web应用,无法通过静态HTML实现;正确做法是调用GitLabAPI(如GET/projects/:id/merge_requests/:mr_iid)获取数据,再用前端模板渲染精简视图。
-
BigInt是JavaScript中用于安全处理任意精度整数的原始类型,适用于超大整数运算,需用n后缀或BigInt()创建,不支持小数、与Number混合运算,/运算向零截断,==允许跨类型比较但===不允许,JSON不支持需手动序列化。
-
box-sizing默认为content-box,width/height仅指内容区,实际宽高含padding和border;应全局设为border-box;margin合并仅发生于常规流中相邻块级盒之间;padding不能为负但background-clip可控背景绘制范围;border-width:0需配合style才生效。
-
应优先提升虚拟机CPU核心数与内存容量,再启用3D图形加速并扩容显存,接着切换为NVMe或SCSI存储控制器、禁用非必要虚拟设备及后台服务,最后优化客户机浏览器与HTML工具配置。
-
问题根源是浮动元素脱离文档流导致父容器高度塌陷为0;推荐用display:flow-root创建BFC来闭合,语义清晰无副作用;若需兼容IE则应弃用float改用flex或grid。
-
rel="preconnect"会提前完成DNS解析、TCP握手和TLS协商,使后续请求直接发送数据;而rel="dns-prefetch"仅做DNS解析,不建立连接,因此preconnect在高延迟网络下可节省100–300ms,提速更显著。
-
Flex容器设为100vh后文字不居中,需同时设置display:flex、justify-content:center和align-items:center,并重置html与body的margin、padding及height;移动端优先用100dvh替代100vh以避免地址栏影响。
-
真正有效的优化不是“给prototype加WeakRef”,而是识别并切断原型链上下游之间不该存在的强引用依赖,如用WeakKeyDictionary替代类级强注册表、在Proxy/Descriptor中用WeakRef封装目标对象、规避对不可弱引用类型的误用,并按内存水位降级类级别缓存。
-
闭包陷阱在单页应用中表现为内存泄漏,即闭包意外捕获大对象(如组件实例、DOM节点)且被长期存活的全局对象持续引用,导致路由跳转后对象仍驻留堆中。
-
viewport必须置于<head>最前面且配对width=device-width与initial-scale=1.0,禁用user-scalable=no违反可访问性,溢出问题需检查CSS布局而非仅依赖viewport配置。
-
ServiceWorker的install和activate事件分别对应installing→installed和activating→activated状态阶段,install阶段缓存资源并需waitUntil确保完成,activate阶段清理旧缓存且不可在install中执行,状态流转受页面生命周期和skipWaiting()控制。