-
柯里化是将多参函数转为单参函数链,核心是闭包保存参数、按fn.length判断是否执行;用途包括预设配置、构建高阶函数、适配函数式编程;需注意与部分应用区别及箭头函数限制。
-
JavaScript不能用于Flutter开发,仅适用于ReactNative;ReactNative用JS/TS编写逻辑并桥接原生组件,性能接近原生;Flutter用Dart和Skia自绘UI,一致性高、动画流畅但需学习新语言。
-
<hr/>是HTML5中的空元素,无需闭合,因其无内容且浏览器忽略后续闭合标签;语义表示主题分隔,非纯装饰,CSS控制需先清border再设新样式。
-
不推荐用float实现多列布局,因其本意是图文环绕,强行用于分栏会导致父容器塌陷、列间内容无法平衡、响应式断点难控;现代应使用column-count等CSS多列模块。
-
useCallback用于记忆化函数,避免组件重新渲染时函数引用变化导致子组件不必要的重渲染。它接收函数和依赖数组,仅当依赖项变化时返回新函数实例,常与React.memo配合优化性能,防止闭包陷阱需正确设置依赖,但不应过度使用,因有额外开销,适用于函数作为props传递至优化子组件的场景。
-
TreeShaking依赖ES6静态模块语法,通过分析import/export明确引用关系,标记未使用导出并在压缩阶段由Terser删除,需配置sideEffects并避免CommonJS以确保效果。
-
JavaScript可通过qrcode.js生成二维码,jsQR实现实时扫描解析,ZXing用于解析图片文件中的二维码,三者分别适用于网页生成、摄像头扫码和上传图片识别场景。
-
实现响应式设计的核心是利用媒体查询、弹性布局和相对单位,根据屏幕尺寸动态调整页面结构与样式;使用@media针对不同视口设置CSS规则,如手机(max-width:768px)和桌面(min-width:769px)断点适配。
-
最快方式是直接在<img>标签用opacity,但会整体透明;rgba()不适用于<img>;PNG自身alpha不可调;Canvas可逐像素控透明但失原生特性;SVG<image>支持opacity动画但有CORS和缩放限制。
-
必须用HTTP服务托管HTML,因file://协议导致手机扫码拒绝加载;二维码需动态生成且目标URL为完整可访问地址;须添加viewport元标签并确保路径、视口、资源加载一致。
-
使用伪类after清除浮动,通过添加clearfix类实现父容器高度自适应;2.设置父容器overflow:hidden或auto触发BFC包含浮动;3.采用display:flow-root创建BFC,现代浏览器推荐方案;4.避免使用额外clear元素。建议优先选择::after或flow-root方法。
-
使用:checked伪类可自定义单选框样式,通过隐藏原生input并结合label实现视觉替换。1.用appearance:none隐藏默认样式;2.利用label+:checked选择器创建自定义按钮或圆点效果;3.推荐将input嵌入label以简化结构;4.可扩展为开关或卡片选择器,通过兄弟选择器动态更新外观。关键在于:checked状态与label联动控制样式变化。
-
WebSocket需服务端配合、状态管理、错误重连和协议设计;常见问题包括URL协议错误(须用ws/wss)、连接拒绝、关闭异常及JSON序列化要求;应检查readyState、实现心跳与指数退避重连,并重视消息ID与离线队列。
-
多端同步的核心是各端基于统一规则和数据源独立推导一致状态。需分层管理状态:服务端权威、设备局部、用户偏好;采用事件驱动的增量同步机制;用状态机+副作用分离保障逻辑一致;冲突时乐观更新并自动合并。
-
应避免在循环中重复计算数组长度、滥用事件监听器、用try...catch包裹高频代码:需缓存length、用事件委托替代单元素绑定、移除非必要try...catch以提升V8性能。