做图形设计时,很多人以为写代码是程序员的事,但其实用到动效、交互原型或者插件开发,免不了要碰点脚本。一旦代码跑不起来,画面错乱、功能失灵,这时候就得靠调试来找问题。别一听“调试”就觉得复杂,其实方法没那么高深,掌握几个常用手段,自己就能搞定大部分小毛病。
打印日志:最直接的办法
最基础也最常用的,就是在关键位置输出变量值。比如你写了个颜色转换函数,结果颜色不对,加一行 console.log 看看输入输出是不是预期的。
function rgbToHex(r, g, b) {
console.log('输入值:', r, g, b);
return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
这就像修电路时拿电笔测哪段没电,哪儿断了看一眼就知道。
断点调试:精准定位问题
现代浏览器和编辑器都自带调试工具。在代码某一行打个断点,运行时程序会停在那里,你可以一步步执行,观察变量变化。比如你在用 JavaScript 做一个渐变动画,发现中间某帧跳变了,就可以在循环里设断点,逐行查看数值更新逻辑。
Chrome 开发者工具的 Sources 面板就能直接操作,不需要额外装软件。
利用调试器语句
有时候不方便开工具,可以在代码里加一句 debugger;,运行到这里会自动弹出调试器。
if (colorMode === 'invalid') {
debugger;
handleColorError();
}
适合临时排查,用完删掉就行,别留着上线代码里。
检查调用栈
当报错信息出现一长串函数名时,别慌,那是调用栈。它告诉你程序是怎么一步步走到出错这一步的。比如你在用 Sketch 插件写代码,突然崩溃,看调用栈能发现是哪个 API 被误调了。
重点关注你自己写的函数出现在哪一层,顺着往上找入口,问题往往就在附近。
模拟输入与单元测试
写个小函数处理图层命名,比如自动加前缀。可以提前写几组测试数据,看看输出对不对。
// 测试用例
console.log(addPrefix('Layer 1')); // 应该输出 'BG_Layer 1'
console.log(addPrefix('')); // 空字符串怎么处理?
这种小测试能防住低级错误,特别是改完代码回头验证时特别有用。
借助 lint 工具
像 ESLint 这类工具能提前发现语法问题和潜在错误。比如少了个括号、变量没声明,保存文件时就标红提醒。对图形设计师来说,装个编辑器插件,写 JS 脚本时能省不少事。
调试不是程序员的专利,谁写代码都可能出错。关键是别怕报错,把问题拆开看,一步步缩小范围,大多数情况都能自己解决。