-
JavaScript数据缓存需按需存储、合理淘汰、安全读写:内存缓存用Map+时间戳+LRU;localStorage需序列化、加版本号、禁存敏感信息;IndexedDB和CacheAPI适用于大容量或离线场景;策略应匹配业务节奏,注重一致性与隔离性。
-
浅拷贝只复制第一层,嵌套对象共享引用;深拷贝需处理循环引用、类型判断及特殊对象,推荐structuredClone()或lodash.cloneDeep()。
-
placeholder是输入框为空且未获焦点时显示的提示文字,可用::placeholder伪元素统一设置样式,现代浏览器均支持,无需兼容旧前缀;其显示逻辑为自动隐藏于聚焦或输入后,不可用JS直接操作文本内容。
-
ES2020引入可选链(?.)、空值合并(??)和空值合并赋值(??=)运算符,简化了对不确定数据结构的安全访问与默认值设置。
-
inline-block盒模型与block完全一致,但布局受限于行内环境;默认收缩包裹内容、高度由内容决定、vertical-align影响对齐、空白间隙源于HTML文本节点、所有行为均符合CSS规范。
-
JavaScriptDate解析ISO格式字符串(如"2023-10-01")默认按UTC处理,再转为本地时区显示,故北京用户看到早8小时;安全写法是显式指定时区或用斜杠格式。
-
grid-column和grid-row生效需父容器设display:grid,仅作用于直接子元素;值指网格线范围而非行列序号,如2/4表示跨第2、3列,span2表示跨2栏,负值如-1/-3须起始线编号小于结束线编号。
-
HTML5拖放功能通过原生API实现,核心是draggable属性与dragstart、dragover、drop事件配合dataTransfer传递数据,需注意阻止默认行为以允许放置。
-
JavaScript继承本质是让子类实例访问父类原型方法并正确初始化属性,核心方案为Object.create()设置原型链并修复constructor,ES6classextends底层仍基于此机制。
-
通过重写XMLHttpRequest的open和send方法可拦截AJAX请求,添加认证头、修改请求体或响应数据。2.拦截fetch需替换全局方法,可在请求前修改参数,响应后处理数据。3.使用Proxy可实现动态、可配置的请求拦截。4.注意拦截仅能包裹行为,存在兼容性与调试风险,生产环境慎用。
-
使用JavaScript操作DOM是插入动态内容的核心,常用方法包括:1.innerHTML快速插入但需防范XSS;2.createElement结合appendChild更安全灵活;3.insertAdjacentHTML实现精准位置插入;4.数据驱动结合模板字符串批量渲染。根据场景选择合适方式可高效实现内容动态更新。
-
Web转App后,HTML<inputtype="file"multiple>在AndroidWebView中常失效,导致仅能单图选择;根本原因在于WebView默认禁用多文件选择器,需通过原生层适配或改用兼容性更强的技术方案。
-
HTML5左右分栏推荐使用Flexbox或Grid:Flexbox通过display:flex、width:200px与flex:1实现;Grid通过display:grid与grid-template-columns:200px1fr实现;float兼容旧浏览器但需清除浮动。
-
递归适用于树形遍历、嵌套对象、分治问题,但需严控深度、避免重复计算、设明确终止条件;否则易栈溢出;应校验输入类型与范围,超深结构宜用栈模拟,DOM操作慎用递归,优先选用flat()、structuredClone()等内置方法。
-
z-index失效的根本原因是父容器创建了层叠上下文,导致子元素的z-index仅在该上下文中生效;常见触发属性包括opacity<1、transform≠none、filter、will-change、position:fixed/absolute等。