-
会改变原数组的方法有push()、pop()、shift()、unshift()、splice()、sort()和reverse();map/filter/reduce等不修改原数组,返回新数组,更安全;复制数组推荐[...arr],深拷贝用structuredClone()。
-
跨页面通信有四种方法:一、URL参数传递少量字符串数据;二、localStorage实现同源双向持久化共享;三、postMessage支持跨窗口安全异步通信;四、BroadcastChannel实现同源多页面广播通信。
-
最常见的:hover写法错误是冒号后有空格或选择器主体后有空格,如button:hover和a:hover均错误;需确保伪类紧跟选择器、无空格、元素可交互、transition定义在常态规则中且未被更高优先级覆盖。
-
使用CSSGrid的auto-fit和minmax实现响应式图标网格,通过grid-template-columns:repeat(auto-fit,minmax(80px,1fr))让图标自适应屏幕宽度,结合gap和padding优化间距,在小屏设备可调整minmax最小值为60px及减小gap,并用媒体查询进一步适配,配合图标字体或SVG确保各设备显示良好。
-
npm是JavaScript项目的依赖管理工具,通过package.json声明契约、package-lock.json锁定精确版本,需用命令安装依赖而非手动修改文件,且必须提交lock文件以确保环境一致。
-
事件委托通过在父元素绑定单个监听器替代为大量子元素分别绑定,显著减少内存占用;它依赖事件冒泡和closest()精准定位目标元素,适用于动态列表等场景,但不适用于少量静态元素或需精细控制监听器生命周期的情况。
-
BEM命名报错主因是HTML中class含空格或点、构建工具误删修饰符、JS拼接不安全;应禁用cssnano的mergeLonghand等优化,用工具函数生成类名,块级变量挂块选择器下,修饰符变量仅覆盖必要项。
-
:not伪类用于排除特定元素应用样式,如p:not(.special)使非.special类的段落变蓝,input:not([disabled])为未禁用输入框添加边框,li:not(:last-child)为非最后一项列表添加下边距,可结合类、ID、属性等选择器精确控制样式。
-
编写HTML代码需保存为.html或.htm文件,使用UTF-8编码;2.双击文件可由默认浏览器打开;3.也可通过浏览器菜单“打开文件”加载;4.对于需HTTP环境的功能,应使用Node.js运行npxhttp-server启动本地服务器访问。
-
答案是实现多语言i18n需分离文本与逻辑,通过定义JSON等格式的语言资源文件,检测用户语言环境优先级(浏览器、请求头、手动选择),编写翻译函数t(key)动态获取文本,并支持按需加载与动态切换语言,结合前端框架封装调用,辅以清晰目录结构和回退机制确保稳定性。
-
使用HTML表单和JavaScript可实现文件上传,需设置enctype="multipart/form-data";2.通过FormData收集文件数据,结合fetch或XMLHttpRequest发送请求;3.可监听upload.onprogress事件显示上传进度;4.前端应校验文件大小和类型以提升体验;5.后端需配套接收接口。
-
line-clamp实现多行文本省略需三步:display:-webkit-box、-webkit-box-orient:vertical、-webkit-line-clamp;仅WebKit内核稳定支持,Firefox部分支持,IE完全不支持,须降级处理。
-
Map和Set是解决键值映射与自动去重问题的专用工具:Map支持对象作键、插入顺序遍历、O(1)查存;Set提供O(1)去重与存在性判断;小规模静态场景仍宜用对象和数组。
-
<p>BigInt是ES2020引入的用于安全表示超大整数的数据类型,解决Number类型在超过2^53-1后精度丢失的问题;可通过在整数后加n或调用BigInt()函数创建;支持与自身类型的数学运算,不兼容number类型混合计算;与number比较时需注意类型差异,推荐用toString()避免精度损失;适用于大整数ID、加密运算、高精度时间戳等场景。</p>
-
JavaScript状态管理核心是共享、响应式追踪与安全更新数据;Redux为跨框架函数式方案,强调纯函数与单向数据流,Vuex则深度集成Vue响应式系统,专用于Vue生态。