CSS缓动函数试玩场 - 所有预设一览
并列播放所有CSS内置缓动函数(ease, linear等)的动画效果,方便对比选择。
UD5工具箱
. 和方括号 [0] 表示法
| 访问方式 | 代码 | 结果 |
|---|---|---|
| 直接访问 | |
|
| 可选链 ?. | |
|
| 可选链 + ?? | |
可选链操作符 ?. 是 ES2020 引入的语法,用于安全地访问深层嵌套的对象属性。
当访问链中某个中间值为 null 或 undefined 时,表达式会短路返回 undefined,而不是抛出 TypeError。
语法形式:
obj?.prop — 安全访问属性obj?.[expr] — 安全访问动态属性fn?.() — 安全调用函数arr?.[index] — 安全访问数组索引示例:
// 不用可选链
const city = user && user.profile && user.profile.address && user.profile.address.city;
// 使用可选链
const city = user?.profile?.address?.city; // 安全、简洁
空值合并操作符 ?? 也是 ES2020 引入的。当左侧值为 null 或 undefined 时返回右侧的默认值。
与逻辑或 || 的关键区别:
| 值 | || '默认' | ?? '默认' |
|---|---|---|
null | '默认' | '默认' |
undefined | '默认' | '默认' |
''(空字符串) | '默认' | '' |
0 | '默认' | 0 |
false | '默认' | false |
NaN | '默认' | NaN |
?? 只把 null 和 undefined 视为空值,而 || 把所有假值都视为空值。
两者经常组合使用,实现安全的深层访问 + 兜底默认值:
// 安全访问 + 默认值
const theme = user?.settings?.theme ?? 'light';
// 等价于
const theme = (user && user.settings && user.settings.theme != null)
? user.settings.theme
: 'light';
最佳实践:使用 ?.?? 链可以让代码更健壮、更可读。
可以!可选链支持三种形式:
obj?.prop — 属性访问arr?.[0] — 数组索引访问(安全访问可能为空的数组)fn?.() — 函数调用(安全调用可能不存在的函数)// 安全访问数组
const firstItem = apiResponse?.data?.items?.[0]?.name ?? '未知';
// 安全调用回调
callback?.(); // 如果 callback 为 null/undefined,什么都不发生
// 安全访问动态属性
const val = obj?.[dynamicKey];
可选链 ?. 和空值合并 ?? 在现代浏览器中得到广泛支持:
对于需要兼容旧浏览器的项目,可以使用 Babel 或 TypeScript 进行转译。
可选链的性能开销极小,现代 JS 引擎已对其进行了深度优化。
相比手动编写 && 短路判断,可选链在大多数情况下性能相当甚至更优,因为引擎可以更好地预测和优化这种标准模式。
建议:优先考虑代码可读性和安全性,不要过早优化。在绝大多数场景中,可选链的性能影响可以忽略不计。
不能。可选链只能用于读取操作,不能用于赋值。
// ❌ 错误:可选链不能用于赋值
obj?.prop = 'value'; // SyntaxError
// ✅ 正确:先判断再赋值
if (obj != null) {
obj.prop = 'value';
}
// 或者
obj && (obj.prop = 'value');
这是因为可选链的设计目的是安全读取,赋值目标必须明确存在。
典型使用场景:
总的来说,任何数据来源不确定的深层访问都适合使用可选链。
TypeScript 从 3.7 版本开始支持可选链,与 JavaScript 语法完全一致:
interface User {
profile?: {
address?: {
city: string;
};
};
}
const user: User | null = getUser();
// TypeScript 中安全访问,类型自动推断为 string | undefined
const city = user?.profile?.address?.city ?? '未知城市';
TypeScript 会正确推断可选链结果的类型(自动加上 | undefined),配合 ?? 可以精确控制最终类型。
并列播放所有CSS内置缓动函数(ease, linear等)的动画效果,方便对比选择。
在浏览器中即时测试for、forEach、map、for-of等循环的执行速度,帮助选择最优写法。
勾选需要展示的选项(接受/拒绝/设置),生成纯净HTML/JS代码,自行套用样式。
显示当前页面的JavaScript堆内存快照和使用限制,辅助内存泄漏调试。
编写带有伪类的选择器,实时高亮匹配的HTML元素,探索现代CSS选择器的能力。
搜索CSS属性,显示其在主流浏览器的支持范围和前缀需求,快速避免踩坑。
搜索CSS属性和选择器,展示在主流浏览器的支持版本和全局使用率百分比。
模拟显示各个HTML元素在典型浏览器中的默认CSS属性表,辅助CSS Reset决策。
选择触发位置、箭头方向与样式,生成轻量悬停提示框代码。
勾选或调整所需的重置元素(盒模型、边距等),生成自定义CSS Reset片段,确保跨浏览器一致性。
在线正则表达式测试工具,支持JavaScript正则匹配、替换、提取等操作,即时显示匹配结果和高亮。
配置内容和位置,生成使用最新HTML popover属性的轻量弹窗代码,无需JavaScript。
利用隐藏的checkbox和CSS兄弟选择器实现无需JS的暗黑/明亮主题切换。
通过勾选元素关系(子孙、兄弟)、属性、伪类等条件,自动生成精确的CSS选择器字符串。
选择多张图片或纯色叠加,切换所有CSS混合模式并实时预览图层效果。
粘贴HTML并编写XPath表达式,高亮显示匹配的节点并提取文本。
自定义箭头方向、颜色、大小和动画,生成无需JavaScript的纯CSS tooltip组件代码。
为内容区域生成灰色闪烁的骨架屏占位代码,包含卡片、标题等组件样式。
粘贴结构化数据代码,模拟Google结构化数据测试,检查错误与丰富结果。
设定物理页框数,输入页引用串,动画展示不同页面置换算法的缺页率。
输入文本,滑块调节letter-spacing和word-spacing,实时显示效果并复制CSS。
输入URL,请求并分析响应中的Cache-Control、ETag等缓存策略头给出优化建议。
显示文本中的非换行空格、全角空格等隐藏字符映射。
快速检测系统是否支持特定的URL Scheme(如mailto:、tel:、tg:)。
粘贴HTML和基本CSS,分析渲染后视觉顺序与DOM顺序的差异,避免可访问性问题。
通过滑块和开关调整 Flex 容器和子项的所有 CSS 属性,实时观察布局变化,理解弹性盒子。
提取HTML中内联style属性或嵌入式style标签,转变为独立CSS规则,辅助样式重构。
检测浏览器是否支持特定自定义协议(如mailto:, tg:),并尝试调用。
将 JSON 数组或对象渲染为可交互的 HTML 表格,支持嵌套展开、列排序和搜索。
输入新旧JSON,并排展示增删改的行级差异,辅助接口变动追踪。