是不是很多学 JS 的新手都有过这种经历?代码明明照着教程敲的,运行时控制台却一片红;报错信息全是英文,看得一头雾水;改了半天没找到问题,最后发现是少打了个分号或者拼错了变量名;更崩溃的是,页面没反应,控制台没报错,根本不知道错在哪。其实啊,写 JS 遇到错误太正常了,哪怕是老手每天也会碰到。关键是要学会 “看懂错误、找到原因、快速解决”。今天兔子哥就结合自己踩过的坑和学员的真实案例,讲讲 JS 基础阶段最容易犯的错误怎么解决,调试技巧怎么用,新手跟着学,报错再也不怕,一起往下看吧!
一、先搞懂:错误提示不是 “天书”,学会看报错信息是第一步
核心问题:控制台报错全是英文,怎么快速看懂它在说啥?哪些错误是新手最常遇到的?
很多新手看到报错就慌,其实报错信息是 “指路明灯”,告诉你哪里错了、可能啥原因。这几个常见报错类型必须认识:
| 错误类型 | 英文提示示例 | 通俗解释 | 新手犯错率 |
|---|---|---|---|
| 引用错误 | Uncaught ReferenceError: x is not defined | 用了没定义的变量 / 函数 | 90% |
| 类型错误 | Uncaught TypeError: x is not a function | 把非函数当函数调用了 | 85% |
| 语法错误 | Uncaught SyntaxError: Unexpected token { | 代码格式错了(少括号 / 引号) | 80% |
| 范围错误 | Uncaught RangeError: Maximum call stack size exceeded | 递归 / 循环太多层导致溢出 | 70% |
兔子哥的学员小王刚开始学 JS 时,因为把 “username” 写成 “usernmae”,报了 “ReferenceError”,找了半小时才发现拼错了 —— 学会看报错信息,能节省超多时间。
二、常见语法误区:这些错误新手一犯再犯,看完别再踩坑
核心问题:语法规则那么多,哪些细节最容易出错?怎么避免这些 “低级错误”?
很多错误不是因为难,而是因为没注意细节,这些语法误区一定要记牢:
1. 变量声明不规范:var/let/const 乱用,变量 “乱跑”
错误示例:
javascript
console.log(age); // 报错:age is not definedvar age = 18; // 变量在使用后声明(var有提升但赋值没提升)为啥错:虽然 var 声明的变量会 “提升”,但赋值不会,在声明前用变量会拿到 undefined;更糟的是,var 声明的变量可能会污染全局。
正确做法:
- 用 let 声明 “会变的变量”,用 const 声明 “不变的常量”
- 先声明后使用,别在变量声明前调用
javascript
let age; // 先声明age = 18;console.log(age); // 正确,输出18const PI = 3.14; // 常量不能改2. 函数调用误区:括号加不加?传参对不对?
错误示例:
javascript
function add(a, b) {return a + b;}let result = add; // 没加括号,没调用函数,拿到的是函数本身console.log(result); // 输出function add(a,b) {...}为啥错:函数名后不加括号,只是 “引用函数”,不会执行;加了括号才是 “调用函数”。
正确做法:
- 调用函数必须加括号:
add(2, 3) - 传参数量要对应,别少传 / 多传导致计算错误
javascript
let result = add(2, 3); // 加括号调用,传对参数console.log(result); // 输出5(正确结果)3. 字符串拼接 / 模板字符串用错:加号漏写或多写
错误示例:
javascript
let name = "小明";let age = 18;let intro = "我叫" + name + "今年" + age + "岁"; // 漏了加号间的空格console.log(intro); // 输出“我叫小明今年18岁”(少空格)为啥错:用 + 号拼接字符串时,变量和文字间容易漏写空格,导致结果挤在一起;更麻烦的是,少写 + 号会报错。
更好的方法:用模板字符串(反引号 +${}),不用拼接 + 号,还能换行:
javascript
let intro = `我叫${name},今年${age}岁`; // 模板字符串自动加空格console.log(intro); // 输出“我叫小明,今年18岁”(正确格式)三、调试技巧:这 3 个 “神器” 帮你定位问题,新手必须会
核心问题:光看报错找不到具体位置,有没有工具能一步步看代码执行过程?怎么调试最高效?
当然有!浏览器自带的调试工具超好用,新手学会这三个功能,调试效率翻倍:
1. console.log:最简单直接的 “打印大法”
这是兔子哥最常用的调试方式,哪里有问题就在哪里打印变量:
javascript
function calculate(a, b) {console.log("输入的a是:", a); // 打印参数console.log("输入的b是:", b);const result = a + b;console.log("计算结果:", result); // 打印中间结果return result;}calculate(2, "3"); // 这里会得到"23"而不是5,打印后能发现类型问题小技巧:用
console.table(数组/对象)打印列表更清晰,比如console.table([{name: "小明"}, {name: "小红"}]),表格形式一目了然。2. 断点调试:让代码 “一步步走”
复杂逻辑光靠打印不够,用断点能看到每一步执行结果:
- 打开浏览器控制台(F12),点 “Sources” 标签,找到你的 JS 文件。
- 在想暂停的代码行号点一下,出现蓝色箭头(断点)。
- 刷新页面,代码执行到断点会暂停,右边能看到当前变量的值。
- 点 “下一步” 按钮(▶️),一步步执行,看变量怎么变化。
学员小李做循环求和时结果总是不对,用断点一步步看,发现循环条件写错了(
i <= 10写成i < 10),很快就改好了。3. 网络面板:查接口请求错误
如果代码涉及接口请求(比如获取数据),用 “Network” 面板:
- 刷新页面,看请求列表里有没有红色的请求(失败的)。
- 点进去看 “Response”(服务器返回)和 “Request”(发送的数据),检查 URL 对不对、参数传没传。
- 常见问题:URL 写错(少个斜杠、域名错)、跨域没处理、参数格式不对。
四、实战案例:从报错到解决,完整排查步骤
核心问题:遇到错误不知道从哪下手?跟着这个步骤排查,再难的错也能解决!
以 “点击按钮没反应,控制台报 TypeError” 为例,完整排查步骤:
案例:点击按钮想弹提示,结果报错 “is not a function”
代码:
html
<button id="myBtn">点我弹提示button><script>const btn = document.getElementById("mybtn"); // 注意id拼错了btn.onclick = function() {alert("点击成功");};script>报错:Uncaught TypeError: Cannot set properties of null (setting 'onclick')
排查步骤:
- 看报错信息:“Cannot set properties of null” 说明
btn是 null(没找到元素)。 - 检查元素获取:用
console.log(btn)打印,发现是 null,说明 getElementById 没找到元素。 - 找原因:HTML 里按钮 id 是 “myBtn”,JS 里写成 “mybtn”(大小写错了),JS 区分大小写!
- 改代码:把
mybtn改成myBtn,刷新页面,点击按钮成功弹提示。
学员经验:小张遇到类似问题,按这个步骤排查,5 分钟就找到了错误,他说:“原来调试这么简单,之前白浪费了半小时。”
五、避坑指南:老司机总结的 10 个 “少犯错” 技巧
- 写代码慢一点,边写边检查:写完一行变量声明,就用 console.log 打印一下,早发现错误。
- 用好编辑器提示:VS Code 等编辑器会标红语法错误,鼠标放上去能看到原因,别忽视。
- 变量名起得有意义:别用
abc,用userNameage这种一看就知道意思的,减少拼写错误。 - 括号 / 引号成对写:写
{就马上补},写"就补",避免漏写导致语法错误。 - 先测试再往下写:写一段功能就测试一段,比如写好变量声明就测试打印,别堆完代码再运行。
- 遇到报错先复制搜:90% 的错误别人都遇到过,搜 “JS 报错信息”,通常能找到解决方法。
- 注释复杂逻辑:循环、条件多的地方加注释,比如
// 这里i从1开始,因为索引0是标题行,改代码时不容易错。 - 少用 var,多用 let/const:避免变量提升和全局污染,减少 “变量乱跑” 的错误。
- 注意数据类型:用
typeof检查变量类型,避免 “数字 + 字符串” 这种意外结果。 - 保存 “错题本”:把遇到的错误、原因、解决方法记下来,下次遇到类似的能快速解决。
最后说几句实在的
写 JS 谁没遇到过错误呢?兔子哥刚开始学的时候,一个 “括号不匹配” 的错误查了两小时,现在想起来还觉得好笑。但正是这些错误让我们进步,每解决一个错误,就多懂一点 JS 的运行逻辑。
别害怕报错,控制台的红色信息不是在批评你,而是在帮你找问题。新手最容易犯的错其实都是小问题:拼写错了、括号没闭合、变量没声明…… 这些只要细心点、用好调试工具,都能解决。
记住,调试能力比写代码能力更重要,因为实际工作中,大部分时间都在改 bug。多练、多试、多总结,你会发现自己解决错误的速度越来越快,甚至会觉得 “找 bug 还挺有意思的”。希望这篇指南能帮你少走弯路,遇到错误别慌,按步骤排查,你一定能搞定!
标签: ReferenceError SyntaxError
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
评论列表
解惑JS语法误区,掌握调试技巧实用助初学者。