JavaScript循环性能测试 - 比较多种写法
在浏览器中即时测试for、forEach、map、for-of等循环的执行速度,帮助选择最优写法。
UD5工具箱
this 上下文测试器
直观理解不同调用方式下 this 的指向变化。点击下方场景卡片的「运行测试」按钮,观察实际执行结果。
function showThis() { return this; } showThis(); // 非严格模式
function showThis() { 'use strict'; return this; } showThis();
const obj = { name: '测试对象', showThis() { return this; } }; obj.showThis();
function Person(name) { this.name = name; this.getThis = function() { return this; }; } const p = new Person('Alice'); p.getThis();
function showThis() { return this; } const ctx = { role: 'call上下文' }; showThis.call(ctx);
function sum(a, b) { return { this: this, result: a + b }; } const ctx = { name: 'apply上下文' }; sum.apply(ctx, [3, 7]);
function showThis() { return this; } const bound = showThis.bind({ id: 'bound' }); bound();
const outer = { name: '外层对象', method() { const arrow = () => this; return arrow(); } }; outer.method();
const obj = { name: '外层', outer() { function inner() { return this; } return inner(); } }; obj.outer();
const btn = document.querySelector('#myBtn'); btn.addEventListener('click', function() { return this; // → 触发事件的DOM元素 });
setTimeout(function() { const capturedThis = this; // capturedThis → ? }, 100);
class Animal { constructor(type) { this.type = type; } getThis() { return this; } } const dog = new Animal('dog'); dog.getThis();
编写一个函数体(使用 this),选择调用方式,观察 this 的指向。
const inner = () => { console.log(this); },箭头函数继承外层方法的 this;const self = this;,在嵌套函数中使用 self;function inner() { ... }.bind(this);addEventListener 绑定的普通函数事件处理器中,this 指向触发事件的 DOM 元素(即 event.currentTarget)。arr.forEach(function(el) { console.log(this); }, myContext);
① 看调用:谁点出来的就是谁(obj.fn() → obj)
② 看 new:new 出来的就是新实例
③ 看箭头:箭头函数看外层(定义时确定)
④ 看 call/apply/bind:传谁就是谁
⑤ 啥都没有:非严格→window,严格→undefined
⚠️ 对象方法中的嵌套普通函数 this 丢失 → 用箭头函数
⚠️ setTimeout 回调 this 指向 window → 用箭头函数或 bind
⚠️ 事件处理用箭头函数拿不到 DOM 元素 → 用 e.currentTarget
⚠️ React 类组件方法需要 bind 或用箭头函数
⚠️ 严格模式下普通调用 this 为 undefined
在浏览器中即时测试for、forEach、map、for-of等循环的执行速度,帮助选择最优写法。
并列播放所有CSS内置缓动函数(ease, linear等)的动画效果,方便对比选择。
输入嵌套对象和取值路径,测试?.可选链和??空值合并运算的结果,学习JS新特性。
编写嵌套函数并单步执行,直观展示每个函数的作用域和闭包变量。
搜索CSS属性,显示其在主流浏览器的支持范围和前缀需求,快速避免踩坑。
创建一个 Proxy,定义各种陷阱函数,操作对象时实时显示被拦截的属性和行为。
输入 gRPC 服务地址和方法,构造 JSON 请求体,观察转为二进制帧并接收响应解码。
选择触发位置、箭头方向与样式,生成轻量悬停提示框代码。
编写带有伪类的选择器,实时高亮匹配的HTML元素,探索现代CSS选择器的能力。
通过滑块和开关调整 Flex 容器和子项的所有 CSS 属性,实时观察布局变化,理解弹性盒子。
注册带类型的 CSS 自定义属性,观察其如何支持过渡动画和继承效果。
拖拽两控制点精细微调CSS `cubic-bezier()` 曲线并对比预设函数效果。
将普通HTML标记转换为符合JSX语法的代码,自动处理class→className、行内样式对象化等。
在线正则表达式测试工具,支持JavaScript正则匹配、替换、提取等操作,即时显示匹配结果和高亮。
粘贴 JSON 数据,自动生成对应的 TypeScript interface 或 type 定义,支持嵌套对象和数组。
输入新旧JSON,并排展示增删改的行级差异,辅助接口变动追踪。
应用 contain 的各种值(layout, paint, size),直观对比开启前后渲染和布局的变化。
将 JSON 数组或对象渲染为可交互的 HTML 表格,支持嵌套展开、列排序和搜索。
粘贴JSON对象,生成可折叠的树形视图,点击节点复制其键值路径,方便调试。
将URL查询字符串转换为键值对对象,编辑并重新生成编码后的查询参数,支持多层嵌套。
搜索CSS属性和选择器,展示在主流浏览器的支持版本和全局使用率百分比。
在页面上叠加可拖拽的半透明网格线,辅助网格布局对齐。
将普通HTML片段一键转为React可用的JSX,处理class→className、style等。
粘贴PHP print_r或var_export输出,智能解析为有效的JSON。
定义多个 CSS 自定义属性,通过滑块或颜色选择器实时修改并查看页面整体风格变化。
在可视化环境中编写JSONPath或JMESPath表达式,实时高亮匹配结果并查看路径提取逻辑。
输入文本,滑块调节letter-spacing和word-spacing,实时显示效果并复制CSS。
粘贴HTML并编写XPath表达式,高亮显示匹配的节点并提取文本。
通过勾选元素关系(子孙、兄弟)、属性、伪类等条件,自动生成精确的CSS选择器字符串。
勾选或调整所需的重置元素(盒模型、边距等),生成自定义CSS Reset片段,确保跨浏览器一致性。